Docker sudah jadi skill wajib developer modern. Tapi command-nya banyak dan sering lupa. Artikel ini adalah cheat sheet yang bisa dibuka kapanpun kamu butuh.
🖼️ Image
# Ambil image dari Docker Hub
docker pull nginx
docker pull nginx:1.25 # versi spesifik
docker pull php:8.2-fpm
# Lihat semua image lokal
docker images
docker image ls
# Hapus image
docker rmi nginx
docker rmi nginx:1.25
docker image prune # hapus semua image yang tidak dipakai
# Build image dari Dockerfile
docker build -t nama-app:1.0 .
docker build -t nama-app:1.0 -f Dockerfile.prod .
# Push image ke registry
docker push username/nama-app:1.0
# Inspect image
docker inspect nginx
docker history nginx # lihat layer-layer image
📦 Menjalankan Container
# Run container
docker run nginx
docker run -d nginx # detached (background)
docker run -d --name web nginx # beri nama
docker run -d -p 8080:80 nginx # map port host:container
docker run -d -p 8080:80 -p 443:443 nginx # multiple port
# Run interaktif (masuk ke dalam container)
docker run -it ubuntu bash
docker run -it --rm ubuntu bash # hapus container saat exit
# Run dengan environment variable
docker run -d -e APP_ENV=production nama-app
docker run -d --env-file .env nama-app
# Run dengan volume (mount folder)
docker run -d -v /host/path:/container/path nginx
docker run -d -v $(pwd):/var/www/html php:8.2-cli
# Run dengan resource limit
docker run -d --memory=512m --cpus=1.0 nginx
⚙️ Manage Container
# Lihat container
docker ps # yang sedang berjalan
docker ps -a # semua (termasuk yang stopped)
# Start / Stop / Restart
docker start nama-container
docker stop nama-container
docker restart nama-container
# Hapus container
docker rm nama-container
docker rm -f nama-container # force stop + hapus
docker container prune # hapus semua container yang stopped
# Masuk ke container yang sedang berjalan
docker exec -it nama-container bash
docker exec -it nama-container sh # kalau bash tidak ada
# Jalankan command di dalam container
docker exec nama-container php artisan migrate
# Lihat log
docker logs nama-container
docker logs -f nama-container # real-time (follow)
docker logs --tail 50 nama-container # 50 baris terakhir
# Lihat resource usage
docker stats
docker stats nama-container
# Inspect container
docker inspect nama-container
💾 Volume
# Buat volume
docker volume create nama-volume
# Lihat volume
docker volume ls
# Gunakan volume saat run container
docker run -d -v nama-volume:/var/lib/mysql mysql:8.0
# Inspect volume (lihat lokasi di host)
docker volume inspect nama-volume
# Hapus volume
docker volume rm nama-volume
docker volume prune # hapus semua volume yang tidak dipakai
🌐 Network
# Lihat network
docker network ls
# Buat network
docker network create nama-network
# Connect container ke network
docker network connect nama-network nama-container
# Run container di network tertentu
docker run -d --network nama-network nama-app
# Inspect network
docker network inspect nama-network
# Hapus network
docker network rm nama-network
docker network prune
🐙 Docker Compose
Docker Compose dipakai untuk mengelola multi-container application. Semua konfigurasi ditulis di file docker-compose.yml.
# Start semua service (baca docker-compose.yml)
docker compose up
docker compose up -d # background
docker compose up --build # rebuild image dulu
# Stop semua service
docker compose down
docker compose down -v # + hapus volume
# Lihat status service
docker compose ps
# Lihat log
docker compose logs
docker compose logs -f # real-time
docker compose logs app # log service tertentu
# Jalankan command di service tertentu
docker compose exec app bash
docker compose exec app php artisan migrate
# Restart service tertentu
docker compose restart app
# Rebuild image
docker compose build
docker compose build app # service tertentu
Contoh docker-compose.yml untuk Laravel
services:
app:
build: .
ports:
- "8000:8000"
volumes:
- .:/var/www/html
environment:
- APP_ENV=local
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: myapp
volumes:
- db_data:/var/lib/mysql
ports:
- "3306:3306"
volumes:
db_data:
🧹 Cleanup
# Hapus semua yang tidak dipakai sekaligus
docker system prune
docker system prune -a # termasuk semua image yang tidak dipakai
docker system prune -a --volumes # + semua volume
# Cek penggunaan disk Docker
docker system df
💡 Workflow Paling Umum
docker compose up -d # start semua service
docker compose logs -f # pantau log
docker compose exec app bash # masuk ke container app
# ... kerja / debug ...
docker compose down # matikan semua
Komentar 0