Pengantar Kontainer dan Docker

Tip

Konten ini adalah kutipan dari eBook berjudul “.NET Microservices Architecture for Containerized .NET Applications” yang tersedia di .NET Docs atau sebagai PDF yang dapat diunduh gratis dan dapat dibaca secara luring.

.NET Microservices Architecture for Containerized .NET Applications eBook cover thumbnail.

Kontainerisasi adalah pendekatan untuk pengembangan perangkat lunak di mana aplikasi atau layanan, dependensinya, dan konfigurasinya (diabstraksi sebagai file manifes penyebaran) dikemas bersama-sama sebagai gambar kontainer. Anda bisa menguji aplikasi kontainer sebagai sebuah unit, dan menyebarkannya sebagai instans gambar kontainer ke sistem operasi host (OS).

Sama seperti pengiriman kontainer memungkinkan barang untuk diangkut dengan kapal, kereta api, atau truk terlepas dari kargo di dalamnya, kontainer perangkat lunak bertindak sebagai unit standar penyebaran perangkat lunak yang dapat berisi kode dan dependensi yang berbeda. Memasukkan perangkat lunak ke dalam kontainer dengan cara ini memungkinkan pengembang dan profesional TI menyebarkannya di seluruh lingkungan dengan sedikit atau tanpa modifikasi.

Kontainer juga mengisolasi aplikasi satu sama lain di OS bersama. Aplikasi kontainer berjalan di atas host kontainer yang pada gilirannya berjalan pada OS (Linux atau Windows). Karena itu, kontainer memiliki jejak yang jauh lebih kecil daripada gambar komputer virtual (VM).

Setiap kontainer bisa menjalankan seluruh aplikasi web atau layanan, seperti yang ditunjukkan pada Gambar 2-1. Pada contoh ini, host Docker adalah host kontainer, dan App1, App2, Svc 1, dan Svc 2 adalah aplikasi atau layanan dalam kontainer.

Diagram showing four containers running in a VM or a server.

Gambar 2-1. Beberapa kontainer berjalan pada host kontainer

Manfaat lain dari kontainerisasi adalah skalabilitas. Anda dapat meluaskan skala dengan cepat dengan membuat kontainer baru untuk tugas jangka pendek. Dari sudut pandang aplikasi, membuat instans gambar (membuat kontainer) mirip dengan membuat instans proses seperti layanan atau aplikasi web. Namun, untuk keandalan, saat Anda menjalankan beberapa instans gambar yang sama di beberapa server host, Anda biasanya ingin setiap kontainer (instans gambar) berjalan di server host atau VM yang berbeda di domain kesalahan yang berbeda.

Singkatnya, kontainer menawarkan manfaat isolasi, portabilitas, kelincahan, skalabilitas, dan kontrol pada seluruh alur kerja siklus hidup aplikasi. Manfaat yang terpenting adalah isolasi lingkungan yang disediakan antara Dev dan Ops.