Panduan Lengkap Podman: Cara Mengelola Kontainer Dockerfile di Ubuntu untuk Developer Indonesia

目次

1. Pendahuluan

Evolusi Teknologi Kontainer dan Alasan Populernya

Beberapa tahun terakhir, teknologi kontainer menjadi semakin penting di dunia pengembangan dan operasi aplikasi. Terutama karena kesesuaian antara lingkungan pengembangan dan produksi, banyak engineer memilih kontainer demi menjamin konsistensi perilaku aplikasi.

Salah satu teknologi paling populer adalah Docker. Namun, belakangan ini Podman mulai menarik perhatian sebagai alternatif Docker. Podman menawarkan CLI (command line interface) yang hampir sama dengan Docker, tetapi tidak memerlukan daemon (daemonless) dan bisa berjalan tanpa hak akses root (rootless).

Mengapa “Podman + Dockerfile + Ubuntu”?

Artikel ini membahas penggunaan Podman, Dockerfile, dan Ubuntu secara bersama-sama untuk mengelola kontainer secara modern di lingkungan Linux.

  • Ubuntu adalah distribusi Linux populer yang digunakan mulai dari pemula hingga profesional,
  • Dockerfile adalah blueprint atau cetak biru untuk membangun image kontainer,
  • dan Podman adalah tools generasi baru untuk menjalankan kontainer dengan lebih fleksibel dan aman.

Khususnya, seiring meningkatnya kesadaran akan keamanan, konfigurasi di mana Podman digunakan di atas Ubuntu untuk membangun dan menjalankan Dockerfile semakin banyak diadopsi baik oleh developer individu maupun tim perusahaan.

Tujuan & Sasaran Pembaca Artikel

Tujuan artikel ini adalah memberikan panduan langkah demi langkah membangun Dockerfile dan membuat kontainer fungsional dengan Podman di lingkungan Ubuntu.

Artikel ini cocok untuk:

  • Pernah menggunakan Docker dan ingin mencoba Podman
  • Pengguna Ubuntu yang ingin menjalankan kontainer dengan lingkungan yang aman
  • Engineer yang ingin mengadopsi teknologi kontainer dalam pekerjaan
  • Pemula yang ingin belajar membuat Dockerfile dan membangun dengan Podman

Artikel ini membahas dari penggunaan dasar, tips menghindari masalah, hingga perbedaan dan cara migrasi dari Docker ke Podman.

2. Apa itu Podman?

Gambaran Umum Podman

Podman (Pod Manager) adalah tool manajemen kontainer generasi baru yang dikembangkan komunitas yang dipimpin oleh Red Hat. Podman memungkinkan build, menjalankan, dan mengelola kontainer sesuai standar OCI (Open Container Initiative), serupa dengan Docker, tetapi dengan perbedaan filosofi desain dan arsitektur.

Keunggulan utama Podman adalah tidak membutuhkan daemon, sehingga memungkinkan operasi yang ringan dan aman. Podman juga mendukung mode rootless, di mana pengguna biasa dapat menjalankan kontainer tanpa perlu hak administrator. Kompatibilitas CLI-nya tinggi dan sebagian besar perintah mirip dengan Docker.

Fitur Utama Podman

Beberapa fitur utama Podman antara lain:

Arsitektur Tanpa Daemon (Daemonless)

Podman tidak memiliki daemon (proses background) untuk mengelola kontainer, sehingga lebih efisien dalam penggunaan sumber daya dan tidak ada proses tambahan yang berjalan di belakang layar.

Dukungan rootless (Tanpa Hak Administrator)

Pengguna biasa bisa menjalankan dan mengelola kontainer tanpa hak root. Ini sangat berguna untuk lingkungan multi-user atau server, sehingga risiko keamanan jauh lebih rendah.

CLI Kompatibel dengan Docker

Podman memakai perintah yang hampir identik dengan Docker. Misalnya, perintah berikut juga berjalan di Podman:

podman build -t myimage .
podman run -it myimage bash

Karena itu, pengguna Docker bisa migrasi ke Podman tanpa banyak belajar ulang.

Fitur Pod (Pod)

Podman mengadopsi konsep “Pod” seperti di Kubernetes, sehingga beberapa kontainer dapat dikelola sebagai satu unit logis. Ini membuat Podman cocok untuk pengembangan lokal maupun migrasi ke cloud berbasis Kubernetes.

Kecocokan dengan Ubuntu

Podman banyak digunakan pada Fedora dan keluarga RHEL, namun berjalan stabil di Ubuntu. Dapat diinstal dari repositori resmi Ubuntu, pengaturannya juga relatif mudah. Khususnya mulai Ubuntu 20.04 LTS, paket Podman sudah tersedia sehingga proses instalasinya menjadi sangat sederhana.

3. Cara Instal Podman di Ubuntu

Persiapan: Hal yang Perlu Dicek Sebelum Instalasi

Sebelum menginstal Podman di Ubuntu, pastikan versi Ubuntu Anda. Podman direkomendasikan untuk Ubuntu 20.04 LTS ke atas. Pada versi lama, paket-paket yang diperlukan belum tentu tersedia di repositori resmi.

Untuk mengecek versi Ubuntu, gunakan perintah berikut:

lsb_release -a

Instalasi Podman memerlukan hak akses sudo. Meski akan digunakan secara rootless, saat instalasi tetap dibutuhkan akses administrator, jadi siapkan terlebih dahulu.

Langkah Instalasi Podman (Repo Resmi Ubuntu)

Pada Ubuntu 20.04 atau 22.04 ke atas, Podman bisa diinstal dengan perintah APT berikut:

sudo apt update
sudo apt install -y podman

Setelah instalasi selesai, pastikan dengan perintah berikut:

podman --version

Menggunakan Versi Terbaru (Tambah Official PPA)

Jika ingin memakai fitur terbaru, tambahkan PPA resmi Podman berikut agar mendapatkan versi paling update, karena repo Ubuntu kadang masih versi lama.

. /etc/os-release
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /" | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/xUbuntu_${VERSION_ID}/Release.key | sudo apt-key add -
sudo apt update
sudo apt install -y podman

Dengan cara ini, Anda bisa menggunakan Podman versi terbaru setara dengan Fedora atau RHEL.

Tes Dasar Podman

Setelah instalasi, lakukan pengecekan dengan perintah berikut:

podman info

Perintah ini menampilkan info versi Podman, konfigurasi, serta fitur yang didukung (termasuk rootless mode).

Coba jalankan kontainer Alpine Linux resmi untuk tes berikut:

podman run --rm -it alpine sh

Jika shell berjalan, berarti instalasi Podman sudah benar.

4. Dasar Dockerfile & Penggunaan dengan Podman

Apa Itu Dockerfile?

Dockerfile adalah blueprint untuk membangun image kontainer. Berisi perintah text yang menjelaskan base image, paket yang harus diinstal, file yang harus disalin, dan sebagainya.

Berdasarkan file ini, tools seperti Podman atau Docker bisa membangun lingkungan kontainer secara konsisten dan otomatis.

Contoh perintah umum Dockerfile:

FROM ubuntu:22.04
RUN apt update && apt install -y curl
COPY ./app.sh /usr/local/bin/app.sh
CMD ["bash", "/usr/local/bin/app.sh"]

Ini artinya: memakai Ubuntu sebagai base image, menginstal curl, menyalin skrip, dan menjalankan skrip tersebut saat kontainer aktif.

Cara Menggunakan Dockerfile dengan Podman

Podman bisa membangun image dari Dockerfile dengan cara yang hampir sama seperti Docker.

1. Persiapan Direktori

Buat struktur file seperti berikut:

project/
├── Dockerfile
└── app.sh

app.sh adalah skrip sederhana, misalnya:

#!/bin/bash
echo "Hello from Podman container!"

Jangan lupa tambahkan permission eksekusi:

chmod +x app.sh

2. Build dengan Podman

Di direktori tempat Dockerfile berada, jalankan:

podman build -t mypodmanapp .

Ini membuat image bernama mypodmanapp.

3. Cek Hasil Build

Cek image yang sudah dibuat dengan:

podman images

4. Jalankan Kontainer

Untuk menjalankan kontainernya:

podman run --rm mypodmanapp

Jika sukses, akan keluar Hello from Podman container!.

Perbedaan dengan Containerfile

Di Podman, file dengan sintaks yang sama seperti Dockerfile kadang disebut Containerfile, untuk menonjolkan bahwa file ini bukan eksklusif Docker.

Sebetulnya, baik file bernama Dockerfile maupun Containerfile dapat dipakai dengan Podman tanpa masalah.

podman build -f Containerfile -t myimage .

Dengan -f Anda bisa pakai nama file apa saja.

5. Praktik: Membuat Kontainer Berbasis Ubuntu

Membuat Dockerfile Berbasis Ubuntu

Sekarang, kita akan membuat Dockerfile berbasis Ubuntu dan membangun serta menjalankan image tersebut dengan Podman secara bertahap.

Contoh Dockerfile sederhana:

FROM ubuntu:22.04

RUN apt update &&     apt install -y curl &&     apt clean

COPY hello.sh /usr/local/bin/hello.sh
RUN chmod +x /usr/local/bin/hello.sh

CMD ["/usr/local/bin/hello.sh"]

File ini melakukan hal-hal berikut:

  • Menggunakan Ubuntu 22.04 official image
  • Menginstal paket curl
  • Menyalin hello.sh dari host ke kontainer
  • Memberikan eksekusi permission ke hello.sh
  • Menjadikan hello.sh skrip default yang dijalankan kontainer

Buat skrip hello.sh sederhana berikut:

#!/bin/bash
echo "Halo, ini output dari kontainer Podman!"

Jangan lupa permission eksekusi:

chmod +x hello.sh

Langkah Build Image dengan Podman

Jika semua file siap, jalankan perintah berikut untuk membangun image:

podman build -t ubuntu-hello .

-t ubuntu-hello memberi nama tag, . menunjukkan direktori Dockerfile berada.

Setelah build selesai, cek daftar image lokal dengan:

podman images

Menjalankan dan Mengecek Kontainer

Untuk menjalankan kontainernya:

podman run --rm ubuntu-hello

Contoh output:

Halo, ini output dari kontainer Podman!

Opsi --rm memastikan kontainer dihapus otomatis setelah selesai dijalankan.

Tips: Jalankan Kontainer secara Interaktif

Jika ingin akses shell di dalam kontainer, gunakan opsi -it:

podman run -it ubuntu-hello bash

Anda bisa memanfaatkan ini sebagai environment pengembangan berbasis Ubuntu yang ringan.

6. Fitur dan Tips Podman yang Bermanfaat

Kelebihan Podman: Fleksibilitas & Keamanan

Podman tetap kompatibel dengan Docker, namun menyediakan fitur yang lebih fleksibel dan aman. Berikut adalah tips dan fitur praktis untuk operasional harian.

Mode rootless untuk Operasi Aman

Salah satu keunggulan Podman adalah rootless mode. Ini berarti user biasa bisa membangun dan menjalankan kontainer tanpa hak administrator.

Contoh penggunaan tanpa sudo:

podman run -it ubuntu bash

Kontainer hanya beroperasi di direktori home user, sehingga resiko pada sistem sangat minim. Mode rootless sangat cocok di shared server/development environment.

Integrasi systemd untuk Auto Start

Podman terintegrasi langsung dengan systemd. Anda dapat membuat kontainer dijalankan otomatis sebagai service di Linux saat booting.

Contoh membuat systemd unit file dari kontainer Podman:

podman generate systemd --name mycontainer --files --restart-policy=always

File akan berada di ~/.config/systemd/user/. Aktifkan dengan:

systemctl --user daemon-reexec
systemctl --user enable --now container-mycontainer.service

Dengan demikian, kontainer otomatis berjalan setiap kali server direstart.

Manajemen Multi-Kontainer dengan podman-compose

Selain kontainer tunggal, Podman bisa mengelola multi-kontainer menggunakan podman-compose, sangat mirip dengan Docker Compose.

Instalasinya via pip:

pip install podman-compose

File docker-compose.yml yang sudah ada bisa dipakai langsung. Untuk menjalankan:

podman-compose up -d

Memudahkan replikasi environment development hanya dengan satu perintah.

Perintah & Tips Lain yang Berguna

Bersihkan Image/Kontainer Tidak Terpakai

podman system prune -a

Membersihkan image, kontainer, dan file sementara yang sudah tidak terpakai.

Aktifkan Auto Completion Command (bash/zsh)

Script autocompletion Podman bisa diinstal dengan:

sudo apt install podman-docker

Setelah itu, command line podman bisa autocomplete seperti Docker.

7. Panduan Migrasi dari Docker ke Podman

Mengapa Banyak yang Beralih ke Podman?

Docker telah lama menjadi standar de facto teknologi kontainer. Namun, banyak engineer kini beralih ke Podman karena lebih ringan dan aman. Khususnya pada Red Hat Enterprise Linux (RHEL) atau Fedora, Docker mulai tidak didukung dan Podman menjadi default.

Bagian ini akan membahas langkah dan perhatian saat migrasi dari Docker ke Podman.

Kompatibilitas Command Docker & Podman

Podman mendukung perintah yang hampir identik dengan Docker. Misalnya:

DockerPodman
docker build -t myapp .podman build -t myapp .
docker run -it myapppodman run -it myapp
docker imagespodman images
docker pspodman ps

Sehingga, pengguna bisa migrasi tanpa banyak perubahan workflow.

podman-docker: Untuk Kompatibilitas Penuh

Jika Anda punya script atau pipeline yang menggunakan perintah docker, cukup instal paket podman-docker agar Podman otomatis digunakan saat docker dipanggil.

sudo apt install podman-docker

Setelah diinstal:

which docker
# → /usr/bin/docker → symbolic link ke podman

Script Docker lama bisa langsung jalan di Podman tanpa modifikasi.

Alternatif docker-compose: podman-compose

Untuk proyek dengan multi-kontainer pakai Docker Compose, gunakan podman-compose sebagai pengganti.

Kompatibilitas tinggi, namun beberapa opsi seperti depends_on dan healthcheck bisa saja berperilaku berbeda. Untuk proyek sederhana (misal web+DB) umumnya berjalan lancar.

  • depends_on dan beberapa opsi belum sepenuhnya didukung
  • Beberapa fitur log/event berbeda dengan Docker

Migrasi Image & Volume

Image lokal Docker tidak langsung bisa digunakan di Podman. Anda perlu re-pull atau ekspor-impor seperti berikut:

Opsi 1: Pull ulang di Podman

podman pull ubuntu:22.04

Opsi 2: Ekspor dari Docker, Impor ke Podman

# Ekspor di Docker
docker save myimage > myimage.tar

# Import ke Podman
podman load < myimage.tar

Dengan cara ini, image Docker bisa digunakan di Podman.

Hal Lain yang Perlu Diperhatikan

  • Dukungan rootless berbeda: Docker umumnya harus root, Podman bisa rootless
  • Arsitektur daemon berbeda: Podman tidak pakai daemon, manajemen proses berbeda
  • Lokasi penyimpanan log/data bisa berbeda, pastikan cek file konfigurasi saat migrasi

8. Pertanyaan yang Sering Diajukan (FAQ)

Q1. Apa perbedaan utama antara Podman dan Docker?

A1. Perbedaan terbesar adalah Podman berjalan tanpa daemon (tidak perlu proses background), sehingga lebih ringan dan aman. Podman juga mendukung mode rootless (user biasa bisa mengelola kontainer). Sebagian besar perintah CLI sama dengan Docker.

Q2. Apa perbedaan Dockerfile dan Containerfile?

A2. Tidak ada perbedaan fungsi. Keduanya adalah file untuk menulis instruksi build image kontainer dengan sintaks sama. Hanya nama file saja, dan biasanya proyek OCI/Podman memakai nama Containerfile agar tidak eksklusif Docker.

Q3. Apakah Podman bisa menggunakan Docker Compose?

A3. Tidak langsung, tapi ada tools podman-compose (berbasis Python) untuk membaca dan menjalankan file docker-compose.yml di lingkungan Podman.

Beberapa opsi seperti depends_on terbatas, jadi untuk proyek kompleks perlu uji dulu.

Q4. Apakah Podman stabil di Ubuntu?

A4. Ya, mulai Ubuntu 20.04 LTS ke atas Podman sangat stabil. Bisa diinstal dari repositori resmi via apt. Untuk versi terbaru bisa pakai PPA resmi.

Q5. Adakah batasan akses jika pakai mode rootless?

A5. Pada mode rootless, beberapa operasi seperti bind ke port <1024 dan privilege tertentu dibatasi. Namun, port forwarding bisa dipakai untuk workaround. Untuk kebanyakan use case, mode rootless sudah sangat cukup.

Q6. Apakah image yang bisa di-pull Podman sama dengan Docker Hub?

A6. Ya, Podman secara default bisa mengakses Docker Hub untuk download image. Terkadang Anda perlu menuliskan docker.io/library/ubuntu secara eksplisit tergantung environment.

podman pull docker.io/library/ubuntu

Podman juga mendukung registry lain seperti Quay.io dan GitHub Container Registry.

Q7. Apakah Podman layak untuk production?

A7. Ya, Podman punya konsep Pod yang kompatibel Kubernetes, bisa terintegrasi systemd, dan cocok untuk lingkungan dengan kebutuhan keamanan tinggi. RHEL & Fedora kini memakai Podman secara default dan sudah banyak dipakai secara enterprise.

Link Referensi

侍エンジニア塾