Apa itu wadah?

Jawaban:

18

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:

  • Wadah mengisolasi ketergantungan komponen perangkat lunak. Pengembang dapat menggunakan wadah untuk menjamin bahwa modul aplikasi akan berfungsi dengan baik pada mesin pengembangan mereka seperti pada QA / UA / Produksi
  • Wadah menggunakan jaringan yang ditentukan perangkat lunak untuk berkomunikasi
  • Definisi kontainer bersifat deklaratif dan dapat dikendalikan dari sumber
  • Sistem manajemen kontainer (Kubernetes, DC / OS, Swarm) dapat mengelola kumpulan sumber daya perangkat keras (komputasi / RAM / penyimpanan) dan kontainer skala dinamis
Dave Swersky
sumber
1
Saya juga melakukan 3 poin terakhir Anda di vSphere, terima kasih kepada gelandangan :)
Tensibai
8

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".)

Michael Le Barbier Grünewald
sumber
1
Tidak terbatas pada Linux lagi, windows 16 memiliki kemampuan yang sama
Tensibai
1
Tautan untuk mendukung klaim saya docs.microsoft.com/en-us/virtualization/windowscontainers/…
Tensibai
7

Biasanya wadah mengacu pada sesuatu seperti wadah buruh pelabuhan yang telah mempopulerkan nama

Saya mengutip dari definisi buruh pelabuhan:

Menggunakan wadah, semua yang diperlukan untuk menjalankan perangkat lunak dikemas ke dalam wadah yang terisolasi. Tidak seperti VM, wadah tidak mengikat sistem operasi penuh - hanya pustaka dan pengaturan yang diperlukan untuk membuat perangkat lunak berfungsi.

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.

Tensibai
sumber
1
Hm, jadi sesuatu seperti gambar VirtualBox (atau apa pun yang disebut dalam VirtualBox) juga bisa memenuhi syarat sebagai "wadah", atau tidakkah saya memahaminya?
Pierre.Vriens
Melihat saya lupa bagian dari pertanyaan, menambahkan perbedaan sambil memperluas jawabannya.
Tensibai
3

Dari definisi AWS :

Wadah adalah metode virtualisasi sistem operasi yang memungkinkan Anda menjalankan aplikasi dan ketergantungannya dalam proses yang diisolasi sumber daya. Kontainer memungkinkan Anda untuk dengan mudah mengemas kode aplikasi, konfigurasi, dan dependensi ke dalam blok bangunan yang mudah digunakan yang menghasilkan konsistensi lingkungan, efisiensi operasional, produktivitas pengembang, dan kontrol versi. Kontainer dapat membantu memastikan bahwa aplikasi menyebar dengan cepat, andal, dan konsisten terlepas dari lingkungan penyebaran. Kontainer juga memberi Anda kontrol granular yang lebih besar terhadap sumber daya sehingga infrastruktur Anda lebih efisien.

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.

Dawny33
sumber