Membuat container image kustom yang sesuai dengan kebutuhan aplikasi. Baik seorang pengembang yang ingin mengemas aplikasi web, atau administrator sistem yang membangun lingkungan pengembangan.
Podman menyediakan alat yang efisien untuk melakukan podman build.
Build Image Go-Lang
Install runtime golang
sudo dnf install golang
Cek version golang
go version
Output: go version go1.25.9 (Red Hat 1.25.9-1.el9_7) linux/amd64
Buat dan masuk ke direktori geeks-golang
mkdir geeks-golang cd geeks-golang
go mod init
go mod init geeks-golang
Buatkan file main.go
nano main.go
Masukan script go http server sederhana.
package main
import (
"fmt";
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request){
fmt.Fprintln(w, "Hello Podman from Go!")
})
http.ListenAndServe(":8080", nil)
}
Jalankan file main.go pada terminal
go run main.go &
Pengujian akses http server dengan curl
curl localhost:8080
Output: Hello Podman from Go!
Membuat Dockerfile
Buat file Dockerfile pada direktori
sudo nano Dockerfile
Masukan script Dockerfile, Tahap-tahap podman membuat image
FROM golang:1.25-alpine WORKDIR /app COPY go.mod ./ RUN go mod download COPY *.go ./ RUN go build -o /geeks-golang EXPOSE 8080 CMD ["/geeks-golang"]
Jalankan podman build untuk membuat image dengan tag image geeks-golang . Tunggu sampai proses build selesai
podman build -t geeks-golang .
Membuat dan menjalankan container dari image geeks-golang
podman run --name geeks-golang -p 8080:8080 geeks-golang:latest
atau
podman run -d --name geeks-golang -p 8080:8080 geeks-golang:latest
Akses http server go-lang pada browser http://IP_Public:8080

Push Images ke Registry Docker
Setelah membuat sebuah images custom podman, kita bisa menyimpan di registry public docker. Login docker pada terminal.
podman login docker.io
Akan muncul from login docker, masukan username dan password.
Output: Username: USERNAME_DOCKER Password: PASSWORD_DOCKER Login Succeeded!
Buat ulang images dengan tag USERNAME/IMAGES-NAME .
podman build -t ga46/geeks-golang .
Pastikan muncul images baru localhost/ga46/geeks-golang .
REPOSITORY TAG IMAGE ID CREATED SIZE localhost/ga46/geeks-golang latest 2c1413d38c55 21 hours ago 317 MB
Push images geeks-golang ke registry docker, tunggu sampai proses selesai.
podman push ga46/geeks-golang
Output: Getting image source signatures Copying blob 60cc72b6fc1c done | Copying blob 6a0ac1617861 skipped: already exists Copying blob 1673a947ce76 skipped: already exists Copying blob 17423c887b37 skipped: already exists Copying blob 9e1b56ebe52c done | Copying blob 212f1aa7b6f1 skipped: already exists Copying blob 2b32fe3ff734 done | Copying blob 81fca3f16592 done | Copying blob 4f4fb700ef54 skipped: already exists Copying config 2c1413d38c done | Writing manifest to image destination
Berikut hasil push images ga46/geeks-golang ke registry docker.

Pull Images Registry Docker ke Podman
Sudah berhasil push image ke registry images ke docker, artinya semua orang bisa pull images geeks-golang tersebut.
podman pull docker.io/ga46/geeks-golang
Pastikan muncul images docker.io/ga46/geeks-golang pada podman.
Output: REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/ga46/geeks-golang latest 2c1413d38c55 21 hours ago 317 MB
Membuat dan menjalankan container dari images docker.io/ga46/geeks-golang .
podman run -d --name geeks-golang-2 -p 8081:8080 docker.io/ga46/geeks-golang
Pengujian akses kedua container tersebut di browser dengan IP_Public sama dengan port yang berbeda.


Membangun Image untuk Banyak Platform
Salah satu keunggulan Podman kemampuannya untuk membangun multi-platform image.
Ini memungkinkan membuat satu image yang dapat berjalan di arsitektur prosesor yang berbeda, seperti amd64 dan arm64. Ini sangat berguna jika aplikasi perlu berjalan di berbagai jenis server.
Untuk membangun image untuk platform tertentu, dapat menggunakan flag –arch dan –platform saat menjalankan podman build, atau mengkonfigurasi koneksi ke Podman remote yang berjalan di arsitektur target.
Kesimpulan
Podman menawarkan cara yang powerful dan fleksibel untuk membuat container image. Metode dockerfile adalah pilihan terbaik untuk proses build yang terstandarisasi, terotomatisasi, dan mudah dibagikan.
Sementara itu, metode commit cocok untuk membuat image secara cepat dari hasil eksperimen atau debug.
Dengan menguasai proses pembuatan image, memegang kendali penuh atas lingkungan aplikasi, memastikan konsistensi dari tahap pengembangan hingga produksi.

