Kata container mengacu pada teknologi virtualisasi ringan yang tersedia di kernel Linux modern, teknologi ini sangat mirip dengan penjara FreeBSD.
Kernel Linux yang lebih tua, non-wadah-mampu mampu menjalankan proses secara bersamaan. Beberapa atribut sistem bersifat pribadi untuk diproses, seperti lingkungan proses atau memori proses: hanya proses yang memiliki atribut ini dan sistem operasi itu sendiri yang dapat mengakses data ini. (Ada banyak celah, seperti beberapa implementasi ps , tapi itu pada dasarnya benar!) Beberapa atribut lain dibagikan di antara proses, seperti sistem file dan antarmuka jaringan misalnya.
Kernel Linux yang modern dan berkemampuan kontainer mampu menangani lebih banyak atribut sistem sebagai data pribadi yang terkait dengan suatu proses atau sekelompok proses. Konteks yang dihasilkan adalah sebuah wadah dan alih-alih menjalankan program dalam "wadah awal" menggunakan sistem file dan antarmuka jaringan yang diinisialisasi oleh sistem operasi, dimungkinkan untuk menjalankan proses dalam wadah lain, sehingga mereka melihat sistem file yang berbeda dan daftar antarmuka jaringan yang berbeda. Oleh karena itu, dua proses yang berjalan dalam wadah yang berbeda hanya benar-benar berbagi kernel. Anda mungkin akrab dengan perintah chroot yang dapat menjalankan proses dalam hierarki file yang berbeda, wadah mengambil ide beberapa langkah lebih jauh.
Tentu saja, ini hanya penjelasan yang sangat kasar, tetapi saya harap ini membantu untuk memperjelas gagasan tentang wadah apa itu. Sekarang, untuk apa mereka baik?
Antarmuka populer dengan kemampuan wadah kernel Linux diimplementasikan oleh docker, sebuah utilitas command-line yang dapat digunakan untuk menghasilkan artefak yang mewakili sistem file ( gambar docker ) dan menjalankan proses dalam wadah di mana sistem file ini dapat diakses. Rangkaian perangkat lunak ini juga dapat membangun sistem jaringan virtual ad-hoc untuk memungkinkan beberapa wadah berkomunikasi di jaringan pribadi.
Teknologi berbasis wadah nyaman untuk:
- Jelaskan penyebaran rumit yang dapat diskalakan .
- Memberikan pengembang aplikasi lingkungan yang sangat mirip dengan lingkungan produksi.
- Terapkan pola server yang tidak dapat diubah, karena artefak perangkat lunak biasanya menggambarkan sistem operasi lengkap, bukan hanya paket aplikasi.
(Seperti yang Anda ketahui dengan teknologi virtualisasi lainnya seperti Virtual Box, Anda mungkin berkomentar bahwa teknologi ini juga dapat dengan mudah mengatasi tiga poin di atas. Saat ini, ada cukup banyak spektrum teknologi virtualisasi, dan kita dapat membandingkan pertanyaan tentang popularitas mereka di konteks tertentu dengan popularitas bahasa komputer: mungkin tergantung pada manfaat teknis setiap solusi individu, tetapi juga untuk banyak faktor yang saya hanya akan beri label "kebetulan".)