GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Docker vs containerd vs CRI-O:Perbandingan Mendalam

Pendahuluan

Penyebaran kontainer adalah metode praktis untuk memastikan portabilitas, skalabilitas, dan kelincahan di dunia DevOps. Dari pengujian hingga produksi, container memfasilitasi seluruh proses pengembangan perangkat lunak.

Platform untuk pengelolaan dan orkestrasi container dirancang agar intuitif dan mudah bagi pengguna akhir. Namun, platform itu sendiri kompleks dan terdiri dari beberapa proyek terkoordinasi.

Artikel ini akan menjelaskan perbedaan antara tiga bagian penting dari ekosistem pengelolaan container - Docker, containerd, dan CRI-O.

Ekosistem Kontainer

Docker dan Kubernetes adalah dua platform terkemuka di ekosistem container. Untuk memastikan interoperabilitas, komunitas menyepakati beberapa standar.

Dua standar terpenting adalah:

  • CRI - Antarmuka Waktu Proses Kontainer. Ini memungkinkan Kubernetes agar kompatibel dengan runtime container yang berbeda, termasuk containerd Docker .
  • OCI - Inisiatif Kontainer Terbuka. Ini menstandardisasi gambar container dan waktu proses.

Infografis di bawah ini menunjukkan bagaimana CRI dan OCI membantu menghubungkan Kubernetes dengan Docker:

Pekerja Buruh

Docker adalah serangkaian proyek manajemen kontainer yang dijalankan oleh perusahaan bernama Docker. Proyek-proyek ini bekerja sama untuk menyediakan platform yang komprehensif untuk penyebaran kontainer.

Proyek yang paling penting adalah:

  • CLI buruh pelabuhan - Program antarmuka baris perintah. Pengguna membuat dan mengelola wadah Docker dengan mengeluarkan perintah CLI buruh pelabuhan.
  • wadah - Daemon yang mendengarkan perintah pengguna. Ini menarik dan menyimpan gambar yang diminta, dan mengontrol siklus hidup container.
  • runC - Runtime container yang ringan dan portabel. runC adalah komponen tingkat rendah yang mengintegrasikan komponen yang diperlukan Docker untuk berinteraksi dengan sistem lokal. Wadah yang dibuat alat ini kompatibel dengan OCI.

Gambar Docker

Gambar Docker adalah templat hanya-baca yang berisi kode aplikasi, bersama dengan pustaka, alat, dan dependensi lain yang diperlukan agar aplikasi berfungsi dengan baik. Saat pengguna mengeluarkan perintah run di Docker, template gambar digunakan untuk men-deploy container aplikasi.

Gambar Docker dibuat menggunakan Dockerfile, dokumen teks yang berisi informasi gambar yang diperlukan. build perintah menggunakan Dockerfile dan konteks untuk membuat gambar.

Docker untuk Kubernetes

Container Runtime Interface adalah plugin yang memungkinkan Kubernetes berkomunikasi dengan runtime container lainnya. Namun, karena Docker tidak mengimplementasikan CRI, Kubernetes memperkenalkan lapisan kompatibilitas yang disebut dockershim . Lapisan ini menjembatani dua API.

Pada versi 1.23, Kubernetes membutuhkan runtime agar kompatibel dengan CRI. Itu berarti dockershim sekarang tidak digunakan lagi, dan Docker Engine tidak lagi didukung sebagai runtime. Namun, Kubernetes masih dapat berkomunikasi dengan Docker melalui containerd, yang dapat kompatibel dengan CRI dengan sebuah plugin.

Antarmuka Waktu Proses Penampung (CRI)

Meskipun Kubernetes adalah platform orkestrasi container, pada level terendah, Kubernetes juga perlu membuat dan mengelola container. Untuk mencapai ini, Kubernetes menggunakan runtime container.

Pada awalnya, Docker Engine adalah satu-satunya runtime yang tersedia di platform. Namun popularitas containerization menghasilkan solusi yang bersaing dan kebutuhan Kubernetes untuk mendukung semuanya. Dengan Antarmuka Waktu Proses Penampung plugin, Kubernetes dapat berkomunikasi dengan semua runtime utama.

wadah

containerd adalah solusi runtime buatan Docker. Daemon ini tersedia untuk OS Linux dan Windows. Sebagai bagian dari proyek Docker, containerd mengelola transfer dan penyimpanan gambar, serta pembuatan, eksekusi, dan pengawasan container.

Kubernetes tidak memerlukan seluruh platform Docker untuk menggunakan containerd. Dengan plugin kompatibilitas CRI, Kubernetes dan containerd dapat berkomunikasi secara langsung.

CRI-O

CRI-O adalah implementasi ringan CRI yang kompatibel dengan OCI. Itu dibuat sebagai alternatif untuk Docker Engine.

Dengan CRI-O, Anda dapat memulai pod Kubernetes dan menarik gambar yang diperlukan. Namun, ini bukan runtime. Sebaliknya, ini digunakan untuk meluncurkan runtime yang kompatibel dengan OCI tingkat rendah lainnya, seperti runC atau Kata.

Inisiatif Penampung Terbuka (OCI)

Docker dan pelaku industri container penting lainnya mendirikan Open Container Initiative (OCI) pada tahun 2015. OCI bertujuan untuk menciptakan standar untuk format container dan runtime. Saat ini, OCI memiliki dua spesifikasi:

  • spesifikasi gambar - spesifikasi gambar yang menjelaskan cara membuat gambar yang sesuai dengan OCI.
  • spesifikasi waktu proses - spesifikasi waktu proses untuk membongkar bundel sistem file.

jalankanC

runC adalah runtime kontainer universal yang dibuat oleh Docker. Meskipun ini adalah bagian dari kumpulan alat Docker, itu tidak memerlukan platform Docker untuk dijalankan.

Beberapa fitur penting dari runC adalah:

  • Dukungan penuh ruang nama Linux.
  • Dukungan asli untuk fitur keamanan Linux, seperti AppArmor, SELinux, dll.
  • Windows 10 menampung dukungan asli.
  • Container yang dibuat dan dikelola runC sesuai dengan OCI.

Docker
  1. Instal ModSecurity dengan Apache di Docker Container

  2. Pengantar Docker

  3. Cara Menjalankan MySQL Dalam Wadah Docker

  1. Beberapa Perintah DOCKER

  2. Cara SSH Ke Wadah Docker

  3. Cara Keluar dari Kontainer Docker

  1. Apa itu containerd, Dan Bagaimana Hubungannya dengan Docker dan Kubernetes?

  2. Cara Menetapkan IP Statis ke Wadah Docker

  3. Cara Menginstal Vim di Wadah Docker