Ada beberapa pertanyaan tentang wadah , seperti:
- Apa peran yang dimainkan oleh alat Manajemen Konfigurasi dalam infrastruktur yang tidak dapat diubah?
- Masalah apa yang dipecahkan oleh orkestrasi wadah?
- Kontainer CI / CD sederhana dalam AWS
Pertanyaan saya :
- Apa itu sebenarnya "wadah" (dalam konteks DevOps)?
- Mengapa mereka digunakan?
terminology
containers
Pierre.Vriens
sumber
sumber
Jawaban:
Hal pertama yang harus diketahui tentang sebuah wadah adalah:
Pertama-tama, ini adalah proses.
Setelah itu dipahami, orang dapat mulai memahami bagaimana wadah membandingkan dan kontras dengan mesin virtual. Containers dan VMs keduanya berbagi isolasi dari host mereka. Metode isolasi adalah perbedaan kritis.
Proses kontainer menggunakan ekstensi ke host kernel OS di mana mereka menjalankan untuk mengisolasi diri dari proses lain. Ekstensi lain juga menyediakan isolasi disk dan sumber daya. Kontainer berbagi kernel dan memori mereka dengan OS host.
Mesin Virtual menggunakan hypervisor untuk mengisolasi VM dari host mereka. Ini adalah lapisan perangkat lunak yang meneruskan permintaan untuk sumber daya dari "guest" (VMs) ke perangkat keras. Disk isolasi disediakan oleh virtualisasi disk. VM tidak membagikan kernel dengan host - mereka memuat kernel mereka sendiri ke dalam ruang memori yang didedikasikan untuk VM.
Salah satu dampak penting dari perbedaan ini adalah bahwa suatu wadah harus kompatibel dengan kernel dengan inangnya. Sebagai contoh, tidak mungkin untuk menjalankan wadah berbasis Windows Server Nano pada host Linux, atau wadah Ubuntu langsung pada host Windows. Mesin Virtual, sebaliknya, dapat menjalankan kernel apa pun terlepas dari OS host. Saat menjalankan wadah Linux di host Windows, Docker menjalankan wadah di Linux VM.
Perbedaan operasional dalam kelincahan: wadah mulai dan berhenti secepat proses normal. VM "lebih berat," membutuhkan sumber daya khusus yang disisihkan untuk mereka dan membutuhkan waktu lebih lama untuk memulai dan mematikan.
Kontainer menawarkan banyak fleksibilitas untuk model operasi DevOps:
sumber
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:
(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".)
sumber
Biasanya wadah mengacu pada sesuatu seperti wadah buruh pelabuhan yang telah mempopulerkan nama
Saya mengutip dari definisi buruh pelabuhan:
Penamaan root datang dengan wadah linux (lxc) yang tujuannya adalah untuk mengisolasi proses dari sistem hostnya, tujuan pertama adalah untuk menghindari kompromi dari proses untuk mengambil alih sistem host.
Sekarang mereka digunakan dalam ruang lingkup yang lebih luas. Dalam definisi 'wadah' modern, Anda akan lebih atau kurang merilis paket untuk runtime yang sudah termasuk aplikasi Anda, itu adalah perangkat menengah yang mendasari jika diperlukan dan semua perpustakaan yang diperlukan dan pastikan itu akan berjalan pada sistem yang kompatibel.
Keuntungan kedua adalah memungkinkan untuk menggunakan beberapa aplikasi dengan ketergantungan yang sama pada versi yang berbeda tanpa harus terlalu banyak men-tweak variabel lingkungannya sehingga memuat yang benar.
Tidak seperti sistem VM seperti mesin virtual kotak virtual atau instance EC2 pada AWS, kontainer hanya virtual pada level sistem file dan terisolasi hanya pada tumpukan memori. Mereka masih berbagi host yang sama dan sistem operasi di bawah mereka akan menengahi cpu ticks.
Mesin virtual adalah virtual pada level perangkat keras, dan Anda menjalankan sistem operasi di dalam, sebuah wadah virtual di level OS, dan Anda menjalankan proses di dalam.
sumber
Dari definisi AWS :
Containerizing adalah mengemas semua kebutuhan penting yang diperlukan untuk melakukan tugas / lingkungan tertentu sehingga swasembada dan dapat dijalankan pada platform apa pun, yang menghilangkan banyak rasa sakit, ketika datang untuk mengatur dan menginstal barang-barang.
sumber