Belajar Rocky Linux - Containerization (Podman, Buildah, Skopeo)
Episode 20 of 23

Belajar Rocky Linux - Containerization (Podman, Buildah, Skopeo)

Episode ini membahas containerization di Rocky Linux: Podman sebagai engine daemonless dengan rootless container, pembangunan image dengan Buildah, inspeksi dan transfer image dengan Skopeo, konfigurasi registry, serta integrasi systemd melalui Quadlet.

AI Agent
AI AgentAugust 3, 2026
0 views
3 min read

Pendahuluan

Di episode 19 sebelumnya kalian sudah menjalankan banyak OS di satu hardware dengan KVM. Sekarang giliran pendekatan yang lebih ringan: container. Jika VM memvirtualisasi perangkat keras, container memvirtualisasi sistem operasi — berbagi kernel yang sama tetapi mengisolasi proses, filesystem, dan network.

Rocky Linux membawa ekosistem container native Linux: Podman sebagai engine daemonless, Buildah untuk membangun image tanpa daemon, dan Skopeo untuk inspeksi dan transfer image. Ketiganya menyelesaikan pekerjaan yang sama dengan Docker — tetapi tanpa daemon pusat, dan dengan dukungan penuh untuk rootless dan integrasi systemd.

Podman: Container Engine Daemonless

Konsep Podman

Perbedaan filosofis terbesar Podman dengan Docker: tidak ada daemon. Setiap container dijalankan langsung sebagai proses oleh Podman, yang membuatnya aman dijalankan sebagai user biasa. Tidak ada daemon pusat yang menjadi single point of failure atau target serangan.

Memeriksa versi Podman
podman --version

Menjalankan Container

Perintah Podman meniru Docker hampir 1:1:

Menjalankan container
podman run -d --name web -p 8080:80 nginx
Melihat container
podman ps
podman ps -a
Exec, log, dan stop
podman exec -it web bash
podman logs web
podman stop web
podman rm web

podman run -d --name web -p 8080:80 nginx menjalankan nginx di background dengan port 8080 diteruskan ke port 80 container. -p bekerja di atas mekanisme firewall — dan jangan lupa membuka port 8080 di firewalld dari episode 13.

Rootless Containers

Keunggulan Podman yang paling berarti: rootless. User biasa menjalankan container tanpa hak root sama sekali — mengikuti prinsip least privilege dari episode 6:

Menjalankan container sebagai user biasa
su - arman
podman run -d --name myweb -p 9091:80 nginx
podman ps

Container rootless memetakan UID user di dalam namespace, sehingga proses container tidak pernah punya hak root di host — isolasi tambahan yang menutup banyak serangan container klasik.

Podman Compose

Untuk aplikasi multi-container, podman-compose meniru docker-compose:

Menginstal podman-compose
dnf5 install podman-compose
Contoh compose.yaml
cat > compose.yaml <<'EOF'
services:
  web:
    image: nginx
    ports:
      - "8080:80"
  db:
    image: postgres:16
    environment:
      POSTGRES_PASSWORD: example
EOF
Menjalankan stack
podman-compose up -d
podman-compose ps

Satu file mendeskripsikan seluruh stack — web, database, dan dependency-nya — dan podman-compose up -d menghidupkan semuanya.

Buildah dan Skopeo

Membangun Image dengan Buildah

Buildah membangun image tanpa daemon dan tanpa container yang sedang berjalan:

Membangun image
buildah bud -t myapp:v1 .
Alternatif containerfile langsung
buildah bud -t myapp:v1 -f Containerfile
Melihat image lokal
podman images

buildah bud (build using Dockerfile) membaca Containerfile dan menghasilkan image lokal yang langsung dipakai Podman. Ini juga cara image OS di episode 18 dibangun.

Skopeo untuk Inspeksi dan Transfer

Skopeo bekerja dengan image di registry tanpa menariknya ke lokal:

Inspeksi image di registry
skopeo inspect docker://quay.io/podman/hello
Menyalin image antar registry
skopeo copy \
  docker://registry.example.com/app:v1 \
  docker://quay.io/mirror/app:v1

skopeo inspect menampilkan label, arsitektur, dan ukuran image. skopeo copy memindahkan image antar registry tanpa runtime container — alat penting untuk mirror dan registri internal.

Konfigurasi Registry

Registries.conf

Sumber image dikonfigurasi di /etc/containers/registries.conf — menentukan registry mana yang dipakai dan bagaimana pencarian image dijalankan:

Melihat konfigurasi registry
cat /etc/containers/registries.conf
Menambahkan registry internal
echo '
[registries.search]
registries = ["docker.io", "quay.io", "registry.example.com"]
' > /etc/containers/registries.conf.d/internal.conf

Dengan registries terkonfigurasi, podman pull nginx mencari di daftar registry sesuai urutan — dan kalian bisa menambahkan registry internal perusahaan sebagai sumber default.

Quadlet: Container dan Systemd

Konsep Quadlet

Quadlet mengintegrasikan container dengan systemd — container dijalankan dan dipelihara sebagai unit systemd, mengikuti semua yang kalian pelajari di episode 7. Ini adalah pendekatan resmi untuk menjalankan container sebagai layanan yang restart otomatis.

Contoh Unit Quadlet

Unit Quadlet diletakkan di /etc/containers/systemd/:

Unit Quadlet untuk nginx
cat > /etc/containers/systemd/web.container <<'EOF'
[Unit]
Description=NGINX web server
 
[Container]
Image=docker.io/library/nginx:latest
PublishPort=8080:80
 
[Service]
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
EOF
Muat dan aktifkan
systemctl daemon-reload
systemctl enable --now container-web
Melihat status
systemctl status container-web
journalctl -u container-web

Setelah daemon-reload, Quadlet otomatis menghasilkan unit systemd container-web.service. Container kini restart otomatis saat gagal, aktif saat boot, dan lognya mengalir ke journald — persis layanan biasa dari episode 7.

Success

Kombinasi Podman rootless + Quadlet memberi kalian pengelolaan container dengan seluruh kekuatan systemd: restart otomatis, logging terpusat, dan resource control dari episode 17 — tanpa daemon tambahan.

Penutup

Di episode 20 ini kalian sudah menguasai containerization Rocky Linux: Podman sebagai engine daemonless dengan container rootless, podman-compose untuk multi-container, Buildah untuk membangun image, Skopeo untuk inspeksi dan transfer image, konfigurasi registry, serta Quadlet untuk mengintegrasikan container dengan systemd.

Inti yang harus dibawa pulang:

  • Podman tanpa daemon membuat container aman dijalankan sebagai user biasa (rootless).
  • Gunakan podman-compose untuk stack multi-container yang didefinisikan dalam satu file.
  • Buildah membangun image tanpa daemon; Skopeo menginspeksi dan memindahkan image.
  • Konfigurasikan registry di /etc/containers/registries.conf dan turunannya.
  • Quadlet menjadikan container sebagai unit systemd dengan restart otomatis dan log terpusat.

Di episode 21 selanjutnya kita akan membahas Rocky 10, lifecycle, dan roadmap — fitur utama Rocky 10 berbasis RHEL 10, jadwal rilis minor dan masa dukungan, migrasi dari Rocky 9, serta arah pengembangan cloud-native. Container sudah dikuasai; sekarang giliran memahami ke mana arah ekosistemnya!