Podman adalah platform container sumber terbuka dan gratis yang dibuat untuk mengembangkan, mengelola, dan menyebarkan container dan pod di lingkungan Linux. Redhat mengembangkan Podman pada tahun 2018. Ini adalah mesin containerization yang bekerja secara berbeda dari Docker. Podman tidak bergantung pada daemon untuk bekerja, tidak seperti Docker yang menggunakan Docker CLI dan daemon Docker. Menjadi bergantung pada daemon mengarah ke satu titik kegagalan.
Podman dirancang menurut standar OCI (Open Container Initiative) yang memungkinkan Podman berinteraksi langsung dengan kernel, container, dan image. Ini juga lebih aman daripada Docker karena tidak memerlukan akses root. Podman dapat digunakan sebagai pengganti Docker karena keduanya sesuai dengan OCI.
Artikel ini akan menunjukkan cara menginstal Podman dan menggunakannya untuk membuat dan mengelola image dan container.
Prasyarat
-
Server berbasis Rocky Linux
-
Pengguna non-sudo dengan hak akses root.
-
Pastikan server diperbarui.
$ sudo dnf update
Instal Podman
Podman termasuk dalam container-tools
modul, bersama dengan Buildah dan Skopeo. Ini juga tersedia di repositori AppStream untuk Rocky Linux 8. Kami akan menggunakan metode modul.
Instal Podman menggunakan dnf module
perintah.
$ sudo dnf module install container-tools
Periksa versi Podman untuk melihat apakah sudah terpasang dengan benar.
$ podman --version podman version 3.2.3
Telusuri dan Unduh Gambar Penampung
Untuk mencari gambar Nginx, gunakan perintah berikut.
$ podman search nginx
Pada output, Anda akan melihat nama registri asal gambar dan deskripsi gambar.
Untuk mengunduh gambar, gunakan salah satu perintah berikut.
$ podman pull docker.io/library/nginx OR $ podman pull nginx
Anda dapat melihat gambar yang diunduh melalui perintah berikut.
$ podman images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/library/nginx latest f8f4ffc8092c 3 days ago 138 MB
Jalankan Kontainer
Gunakan perintah berikut untuk menjalankan container menggunakan image Nginx. Kami telah menamai penampung sebagai server web .
$ podman run -d --name webserver nginx
Kita dapat menggunakan gambar yang sama untuk meluncurkan wadah lain dengan nama yang berbeda.
$ podman run -d --name webserver2 nginx
Kami dapat meluncurkan wadah dalam jumlah tak terbatas menggunakan gambar yang sama.
Mendaftar dan Menghentikan Container
Untuk membuat daftar semua container yang sedang berjalan, gunakan perintah berikut.
$ podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 19b6668bc627 docker.io/library/nginx:latest nginx -g daemon o... 31 seconds ago Up 31 seconds ago webserver 35a286ba5a55 docker.io/library/nginx:latest nginx -g daemon o... 2 seconds ago Up 3 seconds ago webserver2
Hentikan container yang sedang berjalan.
$ podman stop webserver webserver
Verifikasi apakah telah berhenti.
$ podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 35a286ba5a55 docker.io/library/nginx:latest nginx -g daemon o... About a minute ago Up About a minute ago webserver2
Untuk membuat daftar semua wadah, termasuk yang dihentikan, Anda perlu menggunakan -a
bendera.
$ podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 19b6668bc627 docker.io/library/nginx:latest nginx -g daemon o... 2 minutes ago Exited (0) 35 seconds ago webserver 35a286ba5a55 docker.io/library/nginx:latest nginx -g daemon o... About a minute ago Up About a minute ago webserver2
Mulai Container yang dihentikan
Gunakan perintah berikut untuk memulai penampung yang dihentikan.
$ podman start webserver webserver
Verifikasi apakah sudah dimulai.
$ podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 19b6668bc627 docker.io/library/nginx:latest nginx -g daemon o... 3 minutes ago Up 16 seconds ago webserver 35a286ba5a55 docker.io/library/nginx:latest nginx -g daemon o... 2 minutes ago Up 2 minutes ago webserver2
Hapus Penampung
Anda harus menghentikan penampung sebelum menghapusnya.
$ podman stop webserver2
Hapus penampung.
$ podman rm webserver2
Anda dapat menghapus container yang sedang berjalan dengan menggunakan --force
bendera.
$ podman rm webserver2 --force 35a286ba5a553d5f88e3d9795780f893cfb58bf4a126c4912d1ec56b9d0e5a27
Bunuh Wadah
Menghentikan dan Membunuh Wadah adalah dua hal berbeda yang pada akhirnya mencapai hal yang sama. Perbedaannya adalah bahwa Menghentikan penampung akan mematikannya dengan anggun sementara Membunuh penampung berarti mengakhirinya secara paksa, yang mengakibatkan hilangnya data.
Gunakan perintah berikut untuk mematikan container.
$ podman kill -s 9 webserver2
Perintah di atas menggunakan SIGNAL 9 (SIGKILL)
opsi untuk mematikan wadah.
Untuk mematikan semua wadah, gunakan --all
atau -a
bendera dan untuk mematikan hanya wadah terbaru, gunakan --latest
atau -l
bendera.
Hapus Gambar
Anda dapat menghapus gambar menggunakan rmi
perintah.
$ podman rmi registry.redhat.io/rhel8/rsyslog
Anda dapat menghapus beberapa gambar dengan memisahkannya menggunakan koma.
$ podman rmi registry.redhat.io/rhel8/rsyslog registry.redhat.io/ubi8/ubi
Untuk menghapus semua gambar di sistem Anda, gunakan -a
bendera.
$ podman rmi -a
Lihat Log Penampung
Untuk melihat log kontainer, gunakan perintah berikut.
$ podman logs webserver /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh /docker-entrypoint.sh: Configuration complete; ready for start up ......
Anda dapat membatasi log hingga 5 baris terakhir dengan menggunakan --tail
pilihan.
$ podman logs --tail=5 webserver 2021/10/05 10:13:52 [notice] 1#1: built by gcc 8.3.0 (Debian 8.3.0-6) 2021/10/05 10:13:52 [notice] 1#1: OS: Linux 4.18.0-305.19.1.el8_4.x86_64 2021/10/05 10:13:52 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 262144:262144 2021/10/05 10:13:52 [notice] 1#1: start worker processes 2021/10/05 10:13:52 [notice] 1#1: start worker process 23
Secara default, Anda tidak akan mendapatkan stempel waktu apa pun di log. Gunakan -t
tandai untuk menambahkan stempel waktu ke log Anda.
$ podman logs -t webserver 2021-10-05T09:25:02.026967459Z /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration 2021-10-05T09:25:02.026967459Z /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ 2021-10-05T09:25:02.033956297Z /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 2021-10-05T09:25:02.043751152Z 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf 2021-10-05T09:25:02.064561317Z 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf .....
Memeriksa Kontainer
Memeriksa sebuah kontainer akan mencetak informasi tentang sebuah kontainer.
$ podman inspect webserver [ { "Id": "19b6668bc6278a66b3ffc98ae1515af25f5bebcd20bf26de803cae41c4485f59", "Created": "2021-10-05T09:25:01.784949744Z", "Path": "/docker-entrypoint.sh", "Args": [ "nginx", "-g", "daemon off;" ], "State": { "OciVersion": "1.0.2-dev", "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 4423, ....
Perintah default akan mencetak output panjang dalam format JSON. Untuk memfilter output, Anda perlu menggunakan --format
pilihan. Untuk mengetahui kapan container dimulai, jalankan perintah berikut.
$ podman inspect webserver --format '{{.State.StartedAt}}' 2021-10-05 10:13:52.794806322 +0000 UTC
Mengakses Container Shell
Anda dapat mengakses prompt Shell dari wadah apa pun menggunakan exec
pilihan.
$ podman exec -it webserver2 /bin/bash
Pod
Podman memiliki fitur unik yang tidak dimiliki Docker. Podman dapat membuat Pod dari container yang beroperasi bersama. Ini memungkinkan Anda mengelola beberapa penampung secara agregat.
Untuk membuat Pod, gunakan perintah berikut.
$ podman pod create --name mypod
Tambahkan Kontainer ke pod yang baru dibuat.
$ podman run --pod mypod --name myimage1 image:latest $ podman run --pod mypod --name myimage2 diff-image:latest
Sekarang Anda dapat mengelola container menggunakan perintah satu baris sederhana.
$ podman kill mypod # Kill all containers $ podman restart mypod # Restart all containers $ podman stop mypod # Stop all containers $ podman pod ps # List all pods $ podman pod top mypod # Display running processes in a pod $ podman pod inspect mypod # Inspect a Pod $ podman pod rm mypod # Remove the pod
Kesimpulan
Ini menyimpulkan tutorial kami tentang menginstal dan menggunakan Podman untuk menjalankan Containers. Ada banyak hal yang dapat Anda lakukan dengan Podman yang belum kami bahas. Jika Anda memiliki pertanyaan, kirimkan di komentar di bawah.