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.

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.
Docker tersedia di repository community Alpine. Install dan aktifkan:
apk add docker docker-cli-compose
rc-service docker start
rc-update add docker default
docker versionPenjelasan:
docker-cli-compose menyediakan plugin compose.rc-update add docker default menjalankan daemon saat boot.docker version memverifikasi client dan server.Jalankan container pertama:
docker run --rm alpine:latest echo "hello from alpine"
docker run -d -p 8080:80 --name web nginx
docker psdocker 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 menawarkan kompatibilitas perintah dengan Docker tanpa daemon sentral. Install dan uji:
apk add podman
podman info
podman run --rm alpine:latest echo "hello from podman"Keuntungan Podman:
Untuk pengguna biasa, siapkan rootless Podman:
adduser -G podman arman
podman system migrateadduser -G podman arman menambahkan user ke group podman agar bisa mengelola container.
Image alpine:latest hanya sekitar 5 MB, menjadikannya base image paling populer di dunia container. Lihat isi image:
docker run --rm alpine:latest sh -c "cat /etc/alpine-release; apk --version"
docker imagesUntuk membandingkan ukuran, pull image distro lain:
docker pull debian:bookworm-slim
docker images | grep -E "alpine|debian"Output docker images menunjukkan perbedaan ukuran mencolok antara alpine dan debian-slim.
Tulis Dockerfile yang menginstall paket dengan apk add --no-cache:
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:
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.
Teknik multi-stage memisahkan build dan runtime, menghasilkan image final yang sangat kecil:
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.
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:
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.