Podman, atau Pod Manager, adalah alat native Linux untuk membangun dan menjalankan aplikasi terkontainerisasi, termasuk pods dan volumes, pada sebuah server.
Tidak seperti Docker, Podman bersifat daemon-less, artinya tidak memerlukan service terpisah untuk berjalan dan membantu mengurangi attack surface pada aplikasi berbasis kontainer.
Dalam menjalankan container dan mengelola image, Podman memanfaatkan libpod serta berbagai runtime OCI seperti runc, crun, dan runv.
Instal Podman #
Instal paket Podman menggunakan DNF:
dnf -y install podmanVerifikasi #
podman --versionContoh output:
podman version 4.9.4-rhelInstal Docker Compose Plugin #
Docker Compose Plugin dapat digunakan bersama Podman sebagai penyedia compose provider.
Tambahkan repository Docker untuk RHEL:
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repoInstal plugin:
dnf -y install docker-compose-pluginVerifikasi #
podman compose --versionContoh output:
>>>> Executing external compose provider "/usr/libexec/docker/cli-plugins/docker-compose". Please refer to the documentation for details. <<<<
Docker Compose version v2.40.3Buat file docker-compose.yml di dalam folder project dan isi dengan contoh berikut.
services:
db:
image: docker.io/library/mariadb
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_USER: alma
MYSQL_PASSWORD: password
MYSQL_DATABASE: alma_db
ports:
- "3306:3306"
web:
image: docker.io/library/nginx:alpine
ports:
- "80:80"Jalankan docker compose.
podman compose up -dCek status container.
podman compose psPodman: Dockerfile (Podman Build) #
Buat file Dockerfile di dalam folder project:
nano DockerfileIsi dengan contoh berikut untuk membuat image berbasis nginx:alpine dan memodifikasi konten index.html:
FROM nginx:alpine
RUN echo "Dockerfile Test on Nginx" > /usr/share/nginx/html/index.htmlJalankan perintah berikut untuk melakukan build image:
podman build -t test-nginx .Parameter:
-t test-nginx→ memberi nama/tag pada image.→ build context berada pada direktori saat ini
Setelah proses build selesai, cek daftar image yang tersedia:
podman imagesContoh output:
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/test-nginx latest c5c8753cbc67 57 minutes ago 54.2 MB
docker.io/library/nginx alpine d4918ca78576 3 weeks ago 54.3 MBJalankan container dengan image yang baru dibuat:
podman run -dit --name nginx -p 80:80 localhost/test-nginxKeterangan:
-d→ berjalan di background-i/-t→ allocate interactive tty--name nginx→ memberi nama container-p 80:80→ memetakan port host 80 ke container 80
Verifikasi #
Test akses menggunakan curl:
curl localhostContoh output:
Dockerfile Test on NginxTroubleshooting Umum #
Bagian ini membantu mengatasi kendala yang sering muncul setelah instalasi Podman atau Docker Compose Plugin.
Podman tidak dapat menarik (pull) image #
Gejala:
Error: initializing source docker://...: pinging container registry: ...Penyebab Umum:
- DNS server bermasalah
- Akses outbound diblokir firewall
- Repository container sedang bermasalah
Solusi:
-
Ganti DNS resolver, misalnya Cloudflare/Google:
echo -e "nameserver 1.1.1.1\nnameserver 8.8.8.8" > /etc/resolv.conf -
Pastikan firewall mengizinkan port outbound 443.
-
Coba ulang beberapa menit kemudian jika registry sedang bermasalah.
Podman rootless tidak berjalan #
Gejala: Podman tidak dapat mengeksekusi container mode non-root.
Solusi: Pastikan subuid dan subgid sudah diatur:
cat /etc/subuid
cat /etc/subgidJika kosong, isi:
usermod --add-subuids 100000-165535 USERNAME
usermod --add-subgids 100000-165535 USERNAMESet cgroup manager ke systemd secara eksplisit. Tambahkan di ~/.config/containers/containers.conf
[engine]
cgroup_manager = "systemd"Restart session systemd user.
systemctl --user daemon-reexec
systemctl --user daemon-reload
systemctl --user enable --now podman.service
systemctl --user enable --now podman.socketCek apakah podman membaca config.
podman info | grep -A3 'cgroupManager'Podman compose error: “Cannot find docker-compose” #
Penyebab: Podman compose membutuhkan external provider (docker-compose plugin).
Solusi: Pastikan plugin berada di path yang benar:
ls /usr/libexec/docker/cli-plugins/docker-composeJika tidak ada, reinstall:
dnf -y reinstall docker-compose-pluginPodman compose error: “tmp containers-user exist” #
Gejala: Terkadang direktori /tmp/containers-user-1000/ dan /tmp/podman-run-1000 tidak dibersihkan setelah server di reboot sehingga membuat eksekusi podman compose up -d menjadi gagal.
Solusi:
Gunakan systemd tmpfiles untuk auto-clean. Tambahkan aturan di /etc/tmpfiles.d/podman.conf:
# Bersihkan direktori Podman rootless saat boot
R /tmp/containers-user-1000 - - - -
R /tmp/podman-run-1000 - - - -Lalu reload.
systemd-tmpfiles --createPodman tidak dapat memulai container karena SELinux #
Gejala: container gagal start, log menunjukkan permission denied atau policy violation.
Solusi cepat (aman untuk pengujian):
setenforce 0Solusi permanen rekomendasi: gunakan label :Z atau :z pada volume.
Contoh:
podman run -v /data/app:/app:Z imagenameError: “overlayfs: failed to mount” #
Penyebab: Filesystem host tidak mendukung d_type=true.
Solusi: Cek filesystem:
xfs_info / | grep ftypeJika hasil ftype=0, maka XFS tidak kompatibel → solusinya harus reformat partisi dengan ftype=1.
(Ini adalah batasan pada XFS kernel-level.)
Docker Compose tidak bisa jalan walaupun plugin sudah terpasang #
Gejala:
podman-compose: command not found
docker-compose: command not foundSolusi: Gunakan:
podman compose up -dKarena plugin yang dipasang bukan podman-compose (Python version), melainkan Docker Compose CLI plugin.
Container mati setelah logout user #
Gejala:
- Container yang dijalankan dengan rootless Podman berhenti berjalan setelah user logout.
- Hal ini terjadi karena rootless Podman bergantung pada session manager (systemd user session).
Solusi: Mengaktifkan Systemd Linger
Agar systemd tetap menjaga user service tetap aktif walaupun user sudah logout, aktifkan fitur linger untuk user tersebut.
sudo loginctl enable-linger <username>Setelah mengaktifkan linger, cek dengan:
loginctl show-user <username> | grep LingerOutput seharusnya:
Linger=yes