Skip to main content
  1. Posts/

Cara Menginstal Podman di Rocky Linux

·4 mins·
podman centos podman docker
Table of Contents

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 podman

Verifikasi
#

podman --version

Contoh output:

podman version 4.9.4-rhel

Instal 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.repo

Instal plugin:

dnf -y install docker-compose-plugin

Verifikasi
#

podman compose --version

Contoh output:

>>>> Executing external compose provider "/usr/libexec/docker/cli-plugins/docker-compose". Please refer to the documentation for details. <<<<

Docker Compose version v2.40.3

Buat 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 -d

Cek status container.

podman compose ps

Podman: Dockerfile (Podman Build)
#

Buat file Dockerfile di dalam folder project:

nano Dockerfile

Isi 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.html

Jalankan 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 images

Contoh 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 MB

Jalankan container dengan image yang baru dibuat:

podman run -dit --name nginx -p 80:80 localhost/test-nginx

Keterangan:

  • -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 localhost

Contoh output:

Dockerfile Test on Nginx

Troubleshooting 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/subgid

Jika kosong, isi:

usermod --add-subuids 100000-165535 USERNAME
usermod --add-subgids 100000-165535 USERNAME

Set 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.socket

Cek 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-compose

Jika tidak ada, reinstall:

dnf -y reinstall docker-compose-plugin

Podman 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 --create

Podman tidak dapat memulai container karena SELinux
#

Gejala: container gagal start, log menunjukkan permission denied atau policy violation.

Solusi cepat (aman untuk pengujian):

setenforce 0

Solusi permanen rekomendasi: gunakan label :Z atau :z pada volume. Contoh:

podman run -v /data/app:/app:Z imagename

Error: “overlayfs: failed to mount”
#

Penyebab: Filesystem host tidak mendukung d_type=true.

Solusi: Cek filesystem:

xfs_info / | grep ftype

Jika 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 found

Solusi: Gunakan:

podman compose up -d

Karena 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 Linger

Output seharusnya:

Linger=yes

Related

Setup GPT Researcher dengan Docker
·2 mins
docker docker
Setup Apache dan PHP-FPM di Docker
·8 mins
apache docker apache php
Setup Public API iptoasn dengan Docker
·1 min
docker docker
Configuring Networks on CentOS
·1 min
centos centos
Create Bridges on Bonds with and without VLANs using NetworkManager
·1 min
centos linux centos
Compiling Custom Kernel Modules
·3 mins
linux linux centos