Menjalankan kontainer di dalam mesin virtual?

15

Ini adalah pemahaman saya bahwa wadah jauh lebih ringan daripada VM karena mereka tidak memvirtualisasikan perangkat keras tetapi hanya mengisolasi perangkat lunak yang berjalan di dalamnya dari perangkat lunak yang berjalan di wadah lain pada sistem.

Situasi saya sedemikian rupa sehingga saya tidak mampu membeli server tambahan, dan server yang saya miliki semuanya menjalankan hypervisor. Saya perlu menyediakan setidaknya 6 "server" untuk meng-host contoh aplikasi web yang relatif kecil (setiap contoh adalah untuk pelanggan yang berbeda). Akan sia-sia menyediakan VM baru untuk masing-masing server ini, jadi saya berencana untuk menyiapkan 2 VM dan melakukan salah satu dari yang berikut:

  1. Jalankan beberapa instance aplikasi pada setiap VM menggunakan host virtual (apache). atau
  2. Mengatur wadah pada VM yang memungkinkan saya mengisolasi lingkungan.

Mempertimbangkan hal ini, apakah ada overhead yang tidak dapat diabaikan terkait dengan sistem kontainer yang akan membuatnya menjadi ide yang buruk untuk menggunakannya di dalam VM, atau adakah alasan teknis lain mengapa saya tidak ingin menggunakan kontainer?

Chris L
sumber

Jawaban:

13

Docker SANGAT ringan dibandingkan dengan VM dan sistem VM harus berfungsi wadah berjalan dengan baik. Setiap wadah pada dasarnya berjalan sebagai sistem yang terisolasi sehingga sangat baik untuk isolasi dari perspektif stabilitas sistem. Berdasarkan uraian Anda, ini terdengar seperti kasus penggunaan ideal untuk Docker. Jika Anda bereksperimen dengan Docker memastikan Anda menggunakan versi terbaru yang mungkin, beberapa yang lebih tua memiliki beberapa kerentanan yang cukup buruk di dalamnya. Ada beberapa pertimbangan keamanan saat menjalankan Docker.

SELinux - SELinux sadar akan wadah, dan secara otomatis akan membuat label MCS yang dinamai secara acak untuk setiap wadah. Ini membantu memastikan isolasi karena wadah LXC tidak dianggap benar-benar "mengandung" sendiri, meskipun ini membaik.

USER Directive - Di setiap Dockerfile, disarankan praktik terbaik untuk menggunakan arahan USER dan membuat pengguna dijalankan sebagai akun selain root, default. Tangkapan di sini adalah pengguna harus ada di sistem. Ini juga bisa membuat frustasi chowning / chmodding file dan direktori untuk pengguna baru ini, tetapi ini membantu mengurangi risiko Anda. Saya biasanya menyarankan Anda membuat "penampung" atau sesuatu seperti itu di sistem Anda untuk membantu memastikan bahwa pengguna umum tersedia di semua sistem yang tidak tumpang tindih dengan bagian lain dari sistem.

Kalau tidak, bagian terberat adalah mengelola wadah dan memperbaruinya bila perlu.

theterribletrivium
sumber
3

apakah ada overhead yang tidak dapat diabaikan terkait dengan sistem kontainer yang akan membuatnya menjadi ide yang buruk untuk menggunakannya di dalam VM

Apakah Kinerja Wadah Docker di VMware vSphere membantu Anda?

atau adakah alasan teknis lainnya mengapa saya tidak ingin menggunakan wadah?

Saya tidak tahu tentang Docker secara umum karena saya belum bekerja dengannya. Saya berpikir bahwa perangkat lunak manajemen masih kurang matang dibandingkan dengan perangkat lunak manajemen VM ... tapi saya seorang administrator vSphere dan karena itu mungkin bias.

Mempertimbangkan Docker pada VM, CoreOS sekarang secara resmi didukung di vSphere 5.5 . Jadi setidaknya VMware berpikir bahwa Docker / container pada VMs adalah OK.

Mario Lenz
sumber