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

Apa itu Podman dan Apa Bedanya dengan Docker?

Podman adalah mesin kontainer yang kompatibel dengan spesifikasi Kontainer OCI. Podman adalah bagian dari RedHat Linux, tetapi juga dapat diinstal pada distribusi lain.

Karena sesuai dengan OCI, Podman dapat digunakan sebagai pengganti drop-in untuk runtime Docker yang lebih terkenal. Sebagian besar perintah Docker dapat langsung diterjemahkan ke perintah Podman.

Berikut adalah tampilan bagaimana kedua runtime tersebut bertumpuk.

Apa itu Runtime?

Bagi banyak orang, "wadah" masih merupakan "wadah Docker." Ini bukan representasi akurat dari ekosistem container saat ini. Docker menghasilkan gambar wadah OCI, yang dapat digunakan dengan runtime lain yang kompatibel. Kubernetes adalah salah satu contohnya, sedangkan Podman adalah contoh lainnya.

Akibatnya, Podman dan Docker memiliki fungsionalitas inti yang tumpang tindih. Keduanya menghasilkan gambar yang dapat digunakan pihak lain untuk menjalankan container. Kedua runtime kemudian menambahkan spesialisasi mereka sendiri di atas fitur containerization dasar.

Cara Memasang Podman

Jika Anda menggunakan RedHat Linux, Podman ada di extras gudang. Gunakan subscription-manager untuk menambahkan repositori. Anda kemudian dapat menggunakan yum untuk menginstal Podman.

su -
subscription-manager repos --enable rhel-7-server-extras-beta-rpms
yum -y install podman

Sebagian besar distribusi Linux populer lainnya juga menyertakan Podman di repositori default mereka. Anda dapat apt install podman , dnf install podman atau pacman -S podman untuk menginstalnya.

Bekerja dengan Container dan Gambar

CLI Podman sengaja diselaraskan dengan Docker. Artinya, Anda dapat menggunakan perintah Docker yang sudah dikenal untuk berinteraksi dengan container Podman:

podman pull my-image:latest

podman run my-image:latest --name my-container

podman ps

podman rm my-container

Podman harus langsung familiar bagi pengguna Docker. Anda bisa alias docker ke podman dan tidak melihat perbedaan dalam penggunaan sehari-hari. Tentu saja, tidak semua fitur tersedia, namun—mencoba menggunakan perintah Docker Swarm akan menimbulkan kesalahan, karena Podman tidak memiliki apa pun yang setara dengan Swarm.

Apa Perbedaan Podman?

Meskipun terasa mirip dengan Docker, Podman memiliki beberapa perbedaan yang membedakan. Pertama dan bisa dibilang paling signifikan adalah arsitekturnya. Podman tanpa daemon —tidak ada proses jangka panjang dalam mengelola container Anda.

Saat Anda menjalankan podman perintah, Anda berinteraksi langsung dengan proses yang memulai wadah Anda dan mengambil gambar Anda. CLI Docker bergantung pada koneksi ke daemon Docker. CLI mengirimkan perintah ke daemon, dan daemon kemudian bertindak atas perintah tersebut untuk membuat container.

Model Podman membantu mengatasi beberapa masalah seputar keamanan Docker. Kurangnya daemon sangat mengurangi permukaan serangan kontainer. Jika Anda memerlukan akses jarak jauh, Podman mengekspos REST API yang memungkinkan Anda berinteraksi dengan semua jenis sumber daya yang didukung.

Pod

Podman hadir dengan fitur unik yang sama sekali tidak dimiliki Docker. Di Podman, container dapat membentuk “pod” yang beroperasi bersama. Ini mirip dengan konsep Pod Kubernetes.

Untuk membuat Pod, gunakan pod create perintah:

podman pod create --name my-pod

Kontainer ditambahkan ke Pod dengan menyertakan --pod tandai dengan podman run :

podman run --pod my-pod --name image-1 my-image:latest
podman run --pod my-pod --name image-2 another-image:latest

Kontainer dalam Pod dapat dikelola secara agregat dengan menggunakan podman pod perintah:

podman kill my-pod      # Kill all containers
podman restart my-pod   # Restart all containers
podman stop my-pod      # Stop all containers

Konsep Pod sangat kuat, karena memungkinkan Anda mengelola beberapa container secara agregat. Anda dapat membuat container aplikasi, seperti frontend, backend, dan database, menambahkannya ke Pod, dan mengelolanya secara bersamaan.

Docker terdekat dengan ini adalah dengan Compose. Menggunakan Compose mengharuskan Anda untuk menulis docker-compose.yml file dan gunakan docker-compose yang terpisah biner. Podman memungkinkan Anda membuat Pod menggunakan satu perintah tanpa meninggalkan terminal.

Saat Anda perlu mengekspor definisi Pod, Podman akan menghasilkan manifes YAML yang kompatibel dengan Kubernetes. Anda dapat mengambil manifes dan menerapkannya langsung ke cluster Kubernetes. Ini mempersempit kesenjangan antara menjalankan container dalam pengembangan dan meluncurkannya ke infrastruktur produksi.

podman generate kube

Kontainer Tanpa Root

Podman mendukung container tanpa root. Ini membantu Anda mengunci keamanan dengan mencegah container berjalan sebagai root . host pengguna. Docker sekarang mendukung mode rootless sebagai opsi konfigurasi daemon. Podman tidak memiliki akar sebelum Docker dan lebih menekankan penggunaannya.

Pertama, instal slirp4netns :

yum install slirp4netns

Selanjutnya, konfigurasikan jumlah ruang nama jaringan cakupan pengguna:

echo "user.max_user_namespaces=28633" > /etc/sysctl.d/userns.conf
sysctl -p /etc/sysctl.d/userns.conf

Perintah ini memungkinkan penggunaan ruang nama jaringan tanpa root .

Sekarang, Anda siap menjalankan wadah tanpa akar! Hubungkan ke server sebagai pengguna biasa. Mulai wadah baru dengan podman run . Itu akan dibuat dengan UID akun pengguna Anda, bukan root .

Selain ruang nama yang sepenuhnya tanpa akar, podman dicakup untuk pengguna saat ini secara default. Gambar dan wadah Anda disimpan di $HOME pengguna Anda map. Saat Anda menjalankan podman ps atau podman images , Anda hanya akan melihat Anda konten alih-alih setiap sumber daya di sistem.

Kesimpulan

Podman adalah runtime container yang sesuai dengan OCI yang bekerja tanpa daemon. CLI mengimplementasikan semua perintah inti Docker. Anda dapat dengan mudah beralih ke Podman atau menggunakannya bersama dengan instalasi Docker yang ada.

Tidak seperti Docker, Podman memiliki dukungan kelas satu untuk mengelola banyak container. Model Pod memudahkan untuk bekerja dengan setumpuk layanan. Anda dapat menghentikan, memulai ulang, dan menghapus semua container terkait dengan menggunakan perintah tingkat pod.

Podman juga siap membantu Anda beralih ke layanan orkestrasi container. Kemampuan untuk mengekspor YAML yang kompatibel dengan Kubernetes membuat Podman lebih cocok dengan banyak lingkungan produksi dalam container. Pengembang dan operator dapat menggunakan alat yang sama untuk mengelola penampung mereka, memungkinkan lebih banyak kolaborasi dan fleksibilitas.


Docker
  1. Apa Itu Podman Dan Bagaimana Cara Menginstal Podman Di Linux

  2. Apa Arti ${1+“[email protected]”} Dalam Skrip Shell, Dan Apa Bedanya dengan “[email protected]”?

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

  1. Apa itu Makefile dan bagaimana cara kerjanya?

  2. Cara mencadangkan dan memulihkan wadah Docker

  3. Cara Menjeda dan Melanjutkan Wadah Docker

  1. Apa itu Server Web, dan Bagaimana Cara Kerja Server Web?

  2. Cara Mengekspor dan Mengimpor Kontainer Docker

  3. Apa itu Docker (dan wadah Linux?)