Red Hat ganti Docker dengan Podman

Jelas bahwa saat ini gairah di sekitar Red Hat memiliki fokus yang sangat berbeda dan sangat global, tetapi kita masih berbicara tentang kita sendiri - lokal dan diterapkan dari dunia wadah. Sejak awal tahun ini, Red Hat telah aktif bekerja pada pengganti Docker yang disebut Podman (atau libpod ). Untuk beberapa alasan, mereka masih belum menulis tentang proyek ini di hub, tetapi sekarang adalah waktu yang sangat cocok untuk mengenalnya, belajar tentang asal-usulnya dan memikirkan prospek. Ayo pergi!



CRI-O sebagai latar belakang


Jika Anda melihat dunia modern dari wadah Linux, mudah untuk melihat bahwa topik artikel hari ini hanyalah salah satu tahapan dari strategi jangka panjang Red Hat. Konfirmasi yang jelas tentang hal ini adalah proyek CRI-O , yang kami tulis sekitar setahun yang lalu. Singkatnya, CRI-O adalah implementasi Kubernetes CRI (Container Runtime Interface) untuk meluncurkan runtimes kontainer yang kompatibel dengan standar OCI (Open Container Initiative). Bahkan lebih pendek, ini adalah pengganti Docker sebagai runtime untuk Kubernetes. (Inisiatif yang secara teknis serupa untuk K8 dari Docker Inc adalah cri-containerd , yang juga kami tulis ; dalam artikel yang sama, ada perbandingan kinerja kedua solusi ini.)

Sejarah CRI-O sedemikian rupa sehingga ketika OCI sedang mempersiapkan standar untuk kontainer ( Spesifikasi Runtime dan Spesifikasi Gambar ) [yang, bagaimanapun, juga terjadi dengan partisipasi Red Hat] , sebuah proyek baru bernama OCID dibuat dan ditempatkan di inkubator Kubernetes di RH ( Open Container Initiative Daemon), yang kemudian [diminta oleh OCI] berganti nama menjadi CRI-O. Tujuannya adalah "implementasi antarmuka standar untuk lingkungan runtime untuk kontainer di Kubernetes", dan promosi dalam "massa teknis" dilakukan sebagai bagian dari proyek yang lebih besar Red Hat untuk menciptakan sistem operasi untuk wadah - Project Atomic .


Tutup dengan logo CRI-O di KubeCon + CloudNativeCon Amerika Utara 2017

Selama masa lalu, CRI-O telah jatuh tempo ke versi 1.0 , menerima dukungan di Minikube, dan pencapaian terakhirnya dapat dianggap sebagai adopsi wadah kontainer default sebagai antarmuka untuk proyek Kubic , yang, terutama, dikembangkan oleh komunitas kompetitif (untuk Red Hat) Distribusi Linux - openSUSE.

Kembali ke topik artikel: Podman awalnya bagian dari CRI-O.

Penampilan dan esensi Podman


Pengumuman resmi proyek Podman (nama kependekan dari "pod manager") berlangsung pada bulan Februari tahun ini:

β€œPodman (sebelumnya dikenal sebagai kpod) telah ada sejak musim panas lalu. Awalnya, itu adalah bagian dari proyek CRI-O . Kami mengalokasikan podman ke proyek terpisah - libpod . Kami ingin Podman dan CRI-O tumbuh dengan kecepatan mereka sendiri. Keduanya bekerja sangat baik baik secara individu (sebagai utilitas independen) dan bersama-sama. ”

Untuk alasan ini, pengumuman itu sendiri berhak sebagai " reintroduksi" . Dan rilis publik pertama dari Podman - v0.2 - berlangsung 2 minggu sebelum pengumuman ini. Jadi apa esensi dari Podman?

Tujuan Podman adalah untuk menyediakan antarmuka konsol untuk meluncurkan kontainer di luar sistem orkestrasi. Patut dicatat bahwa wadah yang diluncurkan dapat digabungkan ke dalam grup khusus dengan ruang nama yang umum, mis. polong - konsep ini telah menjadi terkenal berkat Kubernetes. Proyek ini mengikuti ideologi perintah UNIX, di mana setiap utilitas hanya melakukan satu hal, tetapi bagus. Detail penting lainnya, yang tanpa lelah ditekankan oleh para pengembang, telah dikutip di atas dalam pengumuman: Podman dapat digunakan baik dengan CRI-O maupun secara independen.

Secara umum, ide utama Podman adalah untuk menyediakan pengguna Kubernetes yang memilih CRI-O sebagai runtime wadah dengan analog antarmuka antarmuka Docker CLI (untuk berinteraksi dengan wadah dan gambar yang berjalan dalam kelompok):

β€œPodman mengimplementasikan 38 dari 40 perintah Docker CLI yang didefinisikan dalam Docker 1.13 (pada saat pengumuman di bulan Februari - sekitar. Terjemahan ), tetapi beberapa di antaranya tidak kami ulangi secara khusus. Misalnya, terkait dengan Docker Swarm - sebagai gantinya, untuk pod / wadah yang perlu diatur, kami sarankan menggunakan Kubernetes. Juga, beberapa perintah untuk Docker Plugins, seperti plugins volume dan untuk jaringan, tidak diimplementasikan. Daftar lengkap perintah Podman dan padanannya di Docker dapat ditemukan di halaman Transfer Penggunaan Podman . "


Sebuah fragmen dari tabel perbandingan untuk perintah Docker dan Podman: kebanyakan dari mereka adalah sama, tetapi ada juga perbedaan

Namun, di balik identitas yang terlihat ini di antarmuka terdapat perbedaan mendasar dalam arsitektur: jika Docker CLI berkomunikasi dengan daemon Docker untuk mengeksekusi perintah, maka Podman adalah utilitas yang berdiri sendiri yang tidak memerlukan daemon apa pun untuk pekerjaannya.

Setidaknya karena perbedaan arsitektur ini, akan lebih tepat untuk membandingkan Podman tidak dengan Docker seperti itu, tetapi dengan crictl, utilitas konsol dari cri-tools (digunakan, khususnya, untuk integrasi contenterd dengan Kubernetes). Dan ada perbedaan fungsional: Podman dapat memulai kembali wadah yang berhenti, dan juga menyediakan pengelolaan gambar wadah. (Untuk perbandingan yang lebih terperinci, lihat blog OpenShift .)

Dengan dirilisnya Fedora 28 Atomic Host (Mei ini), Podman telah menjadi alat manajemen wadah default untuk distribusi Linux ini. Dan baru-baru ini, pada bulan September, di konferensi Linux All Systems Go! di Berlin, Dan Walsh, kepala tim Red Hat Container Engineering, memperkenalkan Podman kepada khalayak yang lebih luas - rekaman pertunjukan dapat dilihat di sini (tetapi hanya presentasi di sini ).


Presentasi Podman di Semua Sistem Go! 2018

Catatan Teknis


Rilis Podman terbaru adalah v0.10.1.3 (tanggal 18 Oktober), dan yang terbaru dengan fitur-fitur baru adalah v0.10.1 (12 Oktober), yang telah memasukkan beberapa tim baru dan bendera tambahan.

Kode podman ditulis dalam Go dan didistribusikan di bawah Lisensi Apache 2.0 gratis. Paket siap-instal tersedia untuk Fedora versi 27 dan yang lebih baru (ada juga panduan instalasi untuk Ubuntu). Di antara komponen tergantung untuk Podman untuk bekerja adalah utilitas untuk wadah Linux seperti runc dan conmon , serta plugin jaringan CNI .

Keduanya memulai wadah dengan Podman dan kemudian bekerja dengannya mirip dengan skenario penggunaan docker biasa:

 $ sudo podman run -dt -e HTTPD_VAR_RUN=/var/run/httpd -e HTTPD_MAIN_CONF_D_PATH=/etc/httpd/conf.d \ -e HTTPD_MAIN_CONF_PATH=/etc/httpd/conf \ -e HTTPD_CONTAINER_SCRIPTS_PATH=/usr/share/container-scripts/httpd/ \ registry.fedoraproject.org/f27/httpd /usr/bin/run-httpd $ sudo podman ps ... $ sudo podman inspect -l ... $ sudo podman logs --latest 10.88.0.1 - - [07/Feb/2018:15:22:11 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-" 10.88.0.1 - - [07/Feb/2018:15:22:30 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-" 10.88.0.1 - - [07/Feb/2018:15:22:30 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-" 10.88.0.1 - - [07/Feb/2018:15:22:31 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-" 10.88.0.1 - - [07/Feb/2018:15:22:31 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-" $ sudo podman top <container_id> UID PID PPID C STIME TTY TIME CMD 0 31873 31863 0 09:21 ? 00:00:00 nginx: master process nginx -g daemon off; 101 31889 31873 0 09:21 ? 00:00:00 nginx: worker process 

Untuk pengantar praktis tentang Podman, Anda juga dapat menggunakan skrip Katacoda online yang sesuai: " Kontainer tanpa Docker - Meluncurkan Kontainer menggunakan Podman dan Libpod ."

Akhirnya, proyek pypodman , yang sedang dalam pengembangan aktif dan menawarkan antarmuka yang ditulis Python untuk eksekusi perintah Podman secara jarak jauh, patut mendapat perhatian khusus.

Bukan Hanya Podman: libpod dan ekosistemnya


Bersamaan dengan Podman, artikel tersebut telah berulang kali menyebutkan proyek libpod. Apa bedanya?

Jika kita berbicara tentang proyek "penuh" Red Hat, maka itu sebenarnya disebut libpod dan di -host di GitHub dengan nama itu. Saat ini, libpod diposisikan sebagai "perpustakaan untuk aplikasi yang perlu bekerja dengan konsep perapian kontainer, dipopulerkan oleh Kubernetes." Dan Podman sendiri adalah utilitas yang merupakan bagian dari perpustakaan libpod.

Jika kita kembali ke pandangan yang lebih luas tentang wadah, maka Red Hat memiliki visinya sendiri, yang menjadi hidup dengan seluruh rangkaian utilitas untuk semua kesempatan. Sebagian besar dari mereka terkonsentrasi di repositori dengan nama yang berbicara github.com/containers , dan ini saja sudah menunjukkan ambisi perusahaan yang jelas (omong-omong, beberapa proyek ini dulu berlokasi di github.com/projectatomic ) .

Pandangan Red Hat tentang standardisasi dan pengembangan ekosistem wadah diartikulasikan langsung dalam README proyek libpod:



Kami sudah menulis tentang hampir semua proyek ini (runc, wadah / gambar, wadah / penyimpanan, CNI, conmon) dalam ulasan CRI-O , namun, tambahan penting sejak itu adalah utilitas untuk membangun gambar wadah yang disebut buildah . Selain itu, Red Hat sudah memiliki jawaban siap pakai untuk beberapa kebutuhan lain dari dunia kontainer modern, seperti udica untuk menghasilkan SELinux dan profil keamanan skopeo untuk bekerja dengan pendaftar gambar jarak jauh.

Meringkas


Sama seperti Red Hat tidak hanya di belakang platform perusahaannya untuk wadah OpenShift, tetapi juga mengambil bagian aktif dalam kehidupan proyek Open Source yang mendasarinya, Kubernetes, perusahaan Amerika itu menyadari pandangannya tentang infrastruktur TI modern pada tingkat yang lebih mendasar - wadah itu sendiri, para insinyur DevOps dan SRE sangat peduli dengan orkestrasi mereka. Podman dan libpod adalah komponen penting dari keseluruhan ekosistem yang sedang dibangun Red Hat di dunia wadah standar terbuka. Jika Anda melihat apa yang terjadi, maka kesepakatan dengan IBM yang disebutkan di bagian paling awal artikel, yang disajikan sebagai inisiatif untuk membentuk penyedia solusi terkemuka di bidang cloud hybrid, terlihat lebih menarik di seluruh industri ...

Akhirnya, saya mengusulkan survei kecil tentang pengetahuan pembaca Habra tentang proyek Podman sebelum munculnya artikel ini. Terima kasih telah berpartisipasi!

PS


Baca juga di blog kami:

Source: https://habr.com/ru/post/id426141/


All Articles