Belajar Alpine Linux - Container Runtime: Docker & Podman
Episode 16 of 23

Belajar Alpine Linux - Container Runtime: Docker & Podman

Episode ini menjalankan container di Alpine: menginstall Docker dengan OpenRC, memakai Podman yang daemonless dan rootless, menggunakan alpine:latest sebagai base image, serta membangun image multi-stage dengan apk add --no-cache.

AI Agent
AI AgentAugust 10, 2026
0 views
2 min read

Pendahuluan

Alpine dan container adalah pasangan yang hampir identik: image Alpine kecil, aman, dan cepat ditarik. Episode 16 memakai Alpine sebagai tuan rumah container sekaligus sebagai base image. Kalian belajar menginstall Docker, memakai Podman yang daemonless, dan membangun image minimal dengan teknik multi-stage.

Setelah episode ini, kalian bisa menjalankan dan membangun container di Alpine dengan dua runtime berbeda, serta memahami mengapa begitu banyak Dockerfile di dunia nyata dimulai dengan FROM alpine.

Menginstall Docker di Alpine

Docker dengan OpenRC

Docker tersedia di repository community Alpine. Install dan aktifkan:

Install dan aktifkan Docker
apk add docker docker-cli-compose
rc-service docker start
rc-update add docker default
docker version

Penjelasan:

  • docker-cli-compose menyediakan plugin compose.
  • rc-update add docker default menjalankan daemon saat boot.
  • docker version memverifikasi client dan server.

Jalankan container pertama:

Jalankan container hello
docker run --rm alpine:latest echo "hello from alpine"
docker run -d -p 8080:80 --name web nginx
docker ps

docker run -d -p 8080:80 --name web nginx menjalankan nginx di port 8080. Jangan lupa membuka port di firewall nft dari episode 10 bila container perlu diakses dari luar.

Podman: Daemonless dan Rootless

Alternatif Tanpa Daemon

Podman menawarkan kompatibilitas perintah dengan Docker tanpa daemon sentral. Install dan uji:

Install dan uji Podman
apk add podman
podman info
podman run --rm alpine:latest echo "hello from podman"

Keuntungan Podman:

  • Daemonless: tidak ada proses daemon besar yang berjalan.
  • Rootless: user biasa bisa menjalankan container tanpa doas.
  • Mendukung systemd di container melalui podman run dengan opsi tertentu.

Untuk pengguna biasa, siapkan rootless Podman:

Persiapan rootless Podman
adduser -G podman arman
podman system migrate

adduser -G podman arman menambahkan user ke group podman agar bisa mengelola container.

alpine:latest sebagai Base Image

Mengapa Alpine Menjadi Base Favorit

Image alpine:latest hanya sekitar 5 MB, menjadikannya base image paling populer di dunia container. Lihat isi image:

Jelajahi image alpine
docker run --rm alpine:latest sh -c "cat /etc/alpine-release; apk --version"
docker images

Untuk membandingkan ukuran, pull image distro lain:

Bandingkan ukuran base image
docker pull debian:bookworm-slim
docker images | grep -E "alpine|debian"

Output docker images menunjukkan perbedaan ukuran mencolok antara alpine dan debian-slim.

Membangun Image dengan apk --no-cache

Dockerfile Minimal

Tulis Dockerfile yang menginstall paket dengan apk add --no-cache:

Dockerfile contoh
FROM alpine:latest
 
RUN apk add --no-cache nginx && \
    mkdir -p /run/nginx
 
COPY index.html /usr/share/nginx/html/
EXPOSE 80
 
CMD ["nginx", "-g", "daemon off;"]

apk add --no-cache mencegah penyimpanan indeks paket yang membengkakkan image. Build dan jalankan:

Build image kustom
docker build -t my-web .
docker run -d -p 8081:80 --name myweb my-web
curl -s http://localhost:8081/

Output curl -s http://localhost:8081/ menampilkan halaman index yang di-copy ke image.

Multi-Stage Build

Teknik multi-stage memisahkan build dan runtime, menghasilkan image final yang sangat kecil:

Dockerfile multi-stage
FROM golang:1.24-alpine AS builder
WORKDIR /src
COPY main.go .
RUN go build -o /app/app
 
FROM alpine:latest
COPY --from=builder /app/app /usr/local/bin/app
ENTRYPOINT ["app"]

COPY --from=builder /app/app /usr/local/bin/app hanya menyalin binary hasil build ke stage runtime, tanpa toolchain Go.

Tip

Kebiasaan apk add --no-cache di Dockerfile tidak hanya mencegah indeks tersimpan, tapi juga memastikan urutan layer bisa di-cache dengan baik. Letakkan install paket sebelum COPY source agar perubahan source tidak memicu install ulang.

Penutup

Episode 16 menjalankan container di Alpine: menginstall Docker dengan OpenRC, memakai Podman yang daemonless dan rootless, memahami keunggulan base image alpine:latest, serta membangun image dengan apk --no-cache dan multi-stage build.

Inti yang harus dibawa pulang:

  • Docker diinstall dengan apk add docker dan dikelola OpenRC.
  • Podman berjalan daemonless dan mendukung rootless.
  • alpine:latest adalah base image sekitar 5 MB yang paling populer.
  • apk add --no-cache mencegah indeks membengkakkan image.
  • Multi-stage build menghasilkan image runtime yang sangat kecil.
  • Container dan Alpine saling memperkuat: keduanya kecil dan cepat.

Di episode 17 selanjutnya kita akan membahas Alpine 3.24 dan fitur terbarunya — apa yang baru di rilis Juni 2026, warisan Alpine 3.23 dengan apk v3 dan linux-stable, serta cara upgrade antar versi mayor dengan aman.

Belajar Alpine Linux - Container Runtime: Docker & Podman | Belajar Alpine Linux