Perbedaan antara chroot dan Docker

15

Saya tidak mengerti perbedaan antara buruh pelabuhan dan chroot. Ya itu bagus dalam hal pengemasan registry. Tapi entah kenapa aku merasakan itu hanya chroot dengan lonceng dan peluit ekstra.

Saya tahu saya kehilangan sesuatu. Akan lebih baik untuk mengetahui bagaimana mereka berbeda dan kebutuhan buruh pelabuhan jika chroot bisa melakukan hal serupa.

Saya tidak bisa menemukan Chroot Vs Docker ini cukup jelas.

Vipin Menon
sumber
Ya, Docker tidak melakukan apa pun yang kernel belum akan lakukan untuk Anda. Ini hanya mengemasnya menjadi alat yang lebih atau kurang koheren dan cukup mudah digunakan. Anda bisa membuat Docker sendiri jika Anda bisa repot melakukan chroot, namespaces, kuota, NAT, dan sisanya sendiri.
Gayus

Jawaban:

8

Nah, lonceng dan peluit tambahan disebut proses isolasi, sebuah wadah mendapatkan namespace sendiri dari kernel host, itu berarti program dalam wadah tidak dapat mencoba membaca memori kernel atau memakan lebih banyak RAM daripada yang diizinkan.

Ini juga mengisolasi tumpukan jaringan, sehingga dua proses dapat mendengarkan pada port 8080 untuk contoh, Anda harus menangani perutean di tingkat host, tidak ada keajaiban di sini, tetapi ini memungkinkan menangani perutean di satu tempat dan menghindari mengubah konfigurasi proses untuk dengarkan port gratis.

Kedua chroot masih membaca / menulis, perubahan apa pun bersifat permanen, penggunaan buruh pelabuhan aufsakan mulai dari sistem file bersih setiap kali Anda meluncurkan wadah (perubahan disimpan jika Anda menghentikan / memulainya IIRC).

Jadi, sementara sebuah wadah dapat dianggap sebagai process namespace+ chroot, kenyataannya sedikit lebih kompleks.

Tensibai
sumber
Perhatikan bahwa aufstidak digunakan secara default lagi. Sekarangoverlay2
Vitalii Vitrenko
Benar, tapi saya pikir ada lebih banyak bahan pendidikan referensi auf daripada overlay2 untuk saat ini :)
Tensibai
Proses normal tidak dapat membaca memori apa pun yang tidak seharusnya. Jika Anda mengandalkan Docker untuk keamanan, Anda salah melakukannya ...
Gayus
@ Gayus Anda salah membaca saya, saya hanya mencoba memberikan petunjuk pencarian ke OP ... Menambahkan buruh pelabuhan dalam pipa pengiriman dengan semua kebebasan yang diberikan kepada pengembang untuk apa yang mereka gunakan di dalam sama sekali bukan titik keamanan. Meskipun demikian ruang nama melindungi dari sekelompok tumpukan overflow dan buffer overflow secara alami.
Tensibai
5

Ya, benar-benar ada lebih dari itu chrootke titik bahwa mereka memiliki sedikit kesamaan.

  • Format file skrip terstandarisasi termasuk semantik yang berkaitan dengan tugas
  • Gambar (termasuk gambar di antara anonim), caching, penamaan, unduh dll termasuk manajemen yang kuat ( docker image prune...)
  • Wadah (termasuk sistem file sementara mereka sendiri, penamaan, bisa docker execmasuk ke mereka dll)
  • Manajemen proses ( docker container ...)
  • Jaringan hanya dengan opsi sederhana, termasuk intra-docker-container-networking dll.
  • Volume (termasuk volume yang dikelola khusus)
  • docker-compose atau berkerumun saat profil rendah ditingkatkan menjadi lebih banyak.
  • Kebun binatang besar solusi lain berdasarkan pada kontainer yang berlabuh (OpenShift dll.).
AnoE
sumber