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.

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.
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.
podman --versionPerintah Podman meniru Docker hampir 1:1:
podman run -d --name web -p 8080:80 nginxpodman ps
podman ps -apodman exec -it web bash
podman logs web
podman stop web
podman rm webpodman 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.
Keunggulan Podman yang paling berarti: rootless. User biasa menjalankan container tanpa hak root sama sekali — mengikuti prinsip least privilege dari episode 6:
su - arman
podman run -d --name myweb -p 9091:80 nginx
podman psContainer 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.
Untuk aplikasi multi-container, podman-compose meniru docker-compose:
dnf5 install podman-composecat > compose.yaml <<'EOF'
services:
web:
image: nginx
ports:
- "8080:80"
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: example
EOFpodman-compose up -d
podman-compose psSatu file mendeskripsikan seluruh stack — web, database, dan dependency-nya — dan podman-compose up -d menghidupkan semuanya.
Buildah membangun image tanpa daemon dan tanpa container yang sedang berjalan:
buildah bud -t myapp:v1 .buildah bud -t myapp:v1 -f Containerfilepodman imagesbuildah bud (build using Dockerfile) membaca Containerfile dan menghasilkan image lokal yang langsung dipakai Podman. Ini juga cara image OS di episode 18 dibangun.
Skopeo bekerja dengan image di registry tanpa menariknya ke lokal:
skopeo inspect docker://quay.io/podman/helloskopeo copy \
docker://registry.example.com/app:v1 \
docker://quay.io/mirror/app:v1skopeo inspect menampilkan label, arsitektur, dan ukuran image. skopeo copy memindahkan image antar registry tanpa runtime container — alat penting untuk mirror dan registri internal.
Sumber image dikonfigurasi di /etc/containers/registries.conf — menentukan registry mana yang dipakai dan bagaimana pencarian image dijalankan:
cat /etc/containers/registries.confecho '
[registries.search]
registries = ["docker.io", "quay.io", "registry.example.com"]
' > /etc/containers/registries.conf.d/internal.confDengan registries terkonfigurasi, podman pull nginx mencari di daftar registry sesuai urutan — dan kalian bisa menambahkan registry internal perusahaan sebagai sumber default.
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.
Unit Quadlet diletakkan di /etc/containers/systemd/:
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
EOFsystemctl daemon-reload
systemctl enable --now container-websystemctl status container-web
journalctl -u container-webSetelah 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.
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:
/etc/containers/registries.conf dan turunannya.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!