← Semua soalan
Apakah perbezaan utama antara virtualisasi dan kontena, dan untuk apa setiap teknologi digunakan?
SederhanaPertengahanDevOps

Apakah perbezaan utama antara virtualisasi dan kontena, dan untuk apa setiap teknologi digunakan?

Jawapan ringkas
Virtualisasi mengabstraksi perkakasan fizikal: hypervisor menjalankan mesin maya, masing-masing dengan OS tetamu penuhnya sendiri. Pebekalan mengabstraksi lapisan OS: bekas berkongsi kernel hos dan mengasingkan apl sebagai proses, menjadikannya lebih ringan dan lebih pantas tetapi dengan pengasingan yang lebih lemah.

Virtualisasi (VM). Mesin maya ialah abstraksi perkakasan fizikal — menukar satu pelayan kepada banyak. hypervisor terletak di antara hos dan VM, menggabungkan CPU, memori dan storan. Setiap VM termasuk salinan penuh OS tetamu, serta aplikasi dan semua perpustakaan. Hipervisor (VMM) menguatkuasakan pengasingan, dan sempadannya dibantu perkakasan oleh sambungan virtualisasi CPU (Intel VT-x / AMD-V).

Hypervisor datang dalam dua jenis:

  • Jenis 1 (logam kosong): berjalan terus pada perkakasan; contoh bersih ialah VMware ESXi/vSphere, Microsoft Hyper-V dan Xen. KVM ialah kes hibrid: modul kernel Linux yang menukar kernel menjadi hipervisor Jenis 1 sementara hos masih menjalankan proses biasa.
  • Jenis 2 (dihoskan): berjalan sebagai aplikasi pada OS konvensional (VirtualBox, VMware Workstation); sesuai dengan mesin peribadi.

Pebekalan. Bekas membungkus kod dan semua kebergantungannya (masa jalan, perpustakaan, tetapan) dan memaya sistem pengendalian dan bukannya perkakasan. Bekas berkongsi kernel OS hos dan dijalankan sebagai proses terpencil dalam ruang pengguna. Di Linux ini menggunakan ruang nama (pengasingan) dan cgroups (perakaunan sumber dan had), diperkukuhkan lagi dengan keupayaan, seccomp, MAC (SELinux/AppArmor), ruang nama pengguna dan mod tanpa akar. Perkongsian kernel membayangkan keserasian keluarga OS: Bekas Linux memerlukan kernel Linux, jadi Docker Desktop pada Windows/macOS menjalankan Linux VM ringan secara senyap-senyap. Docker mempopularkan bekas, tetapi formatnya diseragamkan oleh OCI; masa jalan lain juga wujud — kontena, CRI-O, Podman.

Perbezaan utama:

  • Saiz: imej bekas biasanya beberapa MB hingga ratusan MB; VM ialah GB (tertib magnitud ilustrasi, bukan nombor tetap).
  • Permulaan: bekas bermula dalam saat/milisaat; VM mesti but OS penuh.
  • Overhed: bekas tidak memerlukan OS berasingan bagi setiap apl — kepadatan lebih tinggi, kos pelesenan yang lebih rendah.
  • Pengasingan/keselamatan: VM menawarkan pengasingan berasaskan perkakasan yang lebih kukuh; bekas menawarkan pengasingan berasaskan perisian yang lebih lemah (risiko melarikan diri kontena daripada kernel yang dikongsi). Jalan tengah ialah masa jalan berkotak pasir (gVisor, Bekas Kata, Mercun) yang menghampiri pengasingan peringkat VM.

Untuk kegunaan setiap satu:

  • VM: menjalankan OS yang berbeza pada satu pelayan, beban kerja intensif sumber atau monolitik dan pengasingan yang kuat (berbilang penyewaan, apl lama).
  • Bekas: pembangunan asli awan, perkhidmatan mikro, CI/CD, mudah alih dan penskalaan mendatar pantas (dirancang oleh Kubernetes).

Dalam amalan, kedua-duanya adalah pelengkap: bekas sering dijalankan di dalam VM untuk menggabungkan penghantaran tangkas dengan pengasingan yang kuat.

DockerKontenaPvirtualan

Muat turun sekarang dan cuba secara percuma untuk tugasan anda!

Muat turun untuk Windows
10 15 kredit percuma • Kad kredit tidak diperlukanVersi: Memuatkan…

Tanpa pemasangan - muat turun dan jalankan. Tanpa pendaftaran - log masuk dengan Google.