Dasar
Menjalankan Container
docker run nginx # run image docker run -d nginx # detached (background) docker run -p 8080:80 nginx # map port docker run --name web nginx # named container docker run -it ubuntu bash # interactive shell
Perintah Utama
docker psTampilkan container yang berjalan
docker ps -aTampilkan semua container (termasuk yang berhenti)
docker imagesTampilkan image lokal
docker pull nginxUnduh image dari registry
docker infoInformasi sistem secara keseluruhan
Manajemen Container
Siklus Hidup
docker start <id>Mulai container yang berhenti
docker stop <id>Hentikan dengan baik (SIGTERM)
docker kill <id>Paksa berhenti (SIGKILL)
docker restart <id>Restart container
docker rm <id>Hapus container yang berhenti
docker rm -f <id>Paksa hapus (meskipun berjalan)
Inspeksi & Debugging
docker logs <id>Lihat log container
docker logs -f <id>Ikuti log (live)
docker exec -it <id> bashMasuk shell container yang berjalan
docker inspect <id>Metadata detail container (JSON)
docker top <id>Proses yang berjalan di container
docker statsPenggunaan resource secara live
Menyalin File
docker cp file.txt :/app/ # host → container docker cp :/app/log.txt ./ # container → host
Image
Build & Tagging
docker build -t myapp . # build from Dockerfile docker build -t myapp:v2 . # with tag docker tag myapp user/myapp:v2 # retag image
Publish
docker login docker push user/myapp:v2 docker pull user/myapp:v2
Manajemen Image
docker imagesTampilkan semua image lokal
docker rmi <image>Hapus image
docker image pruneHapus image yang tidak terpakai (dangling)
docker system pruneHapus semua data yang tidak digunakan
docker history <image>Tampilkan riwayat layer image
Dockerfile
Instruksi Umum
FROM node:20Image dasar
WORKDIR /appAtur direktori kerja
COPY . .Salin file ke image
RUN npm installJalankan perintah saat build
CMD ["node", "app.js"]Perintah default saat runtime
EXPOSE 3000Dokumentasikan port yang didengarkan
ENV NODE_ENV=productionAtur environment variable
ARG VERSION=latestVariabel saat build
ENTRYPOINT ["python"]Executable tetap (CMD = argumen)
Contoh Dockerfile
FROM node:20-alpine WORKDIR /app COPY package*.json ./ RUN npm ci --production COPY . . EXPOSE 3000 CMD ["node", "server.js"]
Volume
Penyimpanan Persisten
docker volume create mydata docker run -v mydata:/app/data nginx docker run -v $(pwd):/app nginx # bind mount
Perintah Volume
docker volume lsTampilkan volume
docker volume inspect <v>Detail volume
docker volume rm <v>Hapus volume
docker volume pruneHapus volume yang tidak terpakai
Jaringan
Dasar Jaringan
docker network create mynet docker run --network mynet --name api nginx docker run --network mynet --name db postgres
Perintah Jaringan
docker network lsTampilkan jaringan
docker network inspect <n>Detail jaringan
docker network connect <n> <c>Hubungkan container ke jaringan
docker network rm <n>Hapus jaringan

Container dalam jaringan yang sama dapat saling menjangkau berdasarkan nama

Docker Compose
Contoh compose.yaml
services: web: build: . ports: ["3000:3000"] depends_on: [db] db: image: postgres:16 environment: POSTGRES_PASSWORD: secret volumes: [pgdata:/var/lib/postgresql/data] volumes: pgdata:
Perintah Compose
docker compose upMulai semua service
docker compose up -dMulai di background
docker compose downHentikan dan hapus container
docker compose down -vJuga hapus volume
docker compose buildRebuild image
docker compose logs -fIkuti log semua service
docker compose psTampilkan service yang berjalan
docker compose exec web bashMasuk shell ke sebuah service
Pola Berguna
Perintah Pembersihan
docker system prune -a # remove all unused docker container prune # remove stopped docker image prune -a # remove unused images
Resep Cepat
Container sementaradocker run --rm -it alpine sh
Cek portdocker port
Env vardocker run -e KEY=val image
Env filedocker run --env-file .env image
Restart policydocker run --restart unless-stopped image
Batas resourcedocker run --memory 512m --cpus 1 image