Apa Itu Docker?
Docker adalah platform untuk mengembangkan, mengirim, dan menjalankan aplikasi dalam container. Container adalah unit software yang ringan dan standalone yang berisi semua yang dibutuhkan untuk menjalankan aplikasi: kode, runtime, library, dan konfigurasi. Docker memungkinkan “build once, run anywhere”.
Mengapa Docker?
- Consistency – “Works on my machine” problem solved
- Isolation – Setiap container isolated
- Portability – Run anywhere (dev, staging, prod)
- Efficiency – Lebih ringan dari VM
- Scalability – Mudah di-scale horizontal
- DevOps – CI/CD, microservices, cloud native
Konsep Dasar Docker
- Image – Template read-only untuk membuat container
- Container – Instance running dari image
- Dockerfile – Script untuk build image
- Docker Compose – Multi-container orchestration
- Registry – Docker Hub, private registry
- Volume – Persistent data storage
- Network – Komunikasi antar container
Perintah Docker Dasar
# Images
docker pull nginx # Download image
docker images # List images
docker rmi nginx # Hapus image
docker build -t myapp . # Build image dari Dockerfile
docker push myrepo/myapp # Push ke registry
# Containers
docker run nginx # Jalankan container
docker run -d -p 80:80 nginx # Detached, port mapping
docker run -it ubuntu bash # Interactive
docker ps # List running containers
docker ps -a # List all containers
docker stop container_id # Stop container
docker start container_id # Start container
docker rm container_id # Hapus container
docker logs container_id # Lihat logs
docker exec -it container_id bash # Masuk ke container
# Docker Compose
docker-compose up # Start services
docker-compose up -d # Detached
docker-compose down # Stop dan hapus
docker-compose ps # List services
docker-compose logs # Lihat logs
docker-compose build # Rebuild images
# Cleanup
docker system prune # Hapus unused resources
docker volume prune # Hapus unused volumes
docker network prune # Hapus unused networks
Dockerfile Example
# Node.js app
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]
# PHP/Laravel app
FROM php:8.2-fpm
RUN apt-get update && apt-get install -y \
git curl libpng-dev libonig-dev libxml2-dev
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
WORKDIR /var/www
COPY . .
RUN composer install --no-dev --optimize-autoloader
EXPOSE 9000
CMD ["php-fpm"]
Docker Compose Example
version: '3.8'
services:
app:
build: .
ports:
- "8000:8000"
volumes:
- .:/app
environment:
- DB_HOST=db
- DB_NAME=myapp
depends_on:
- db
- redis
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: myapp
volumes:
- db_data:/var/lib/mysql
ports:
- "3306:3306"
redis:
image: redis:alpine
ports:
- "6379:6379"
nginx:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- app
volumes:
db_data:
Roadmap Belajar Docker
Level 1: Beginner
- Install Docker – Docker Desktop (Windows/Mac) atau Docker Engine (Linux)
- Run Containers – docker run, docker ps, docker stop
- Images – docker pull, docker images, docker rmi
- Dockerfile – FROM, RUN, COPY, CMD, EXPOSE
- Volumes – Data persistence
- Networks – Container communication
Level 2: Intermediate
- Docker Compose – Multi-container apps
- Docker Hub – Push/pull images
- Environment Variables – Configuration
- Multi-stage Builds – Optimized images
- Health Checks – Container health monitoring
Level 3: Advanced
- Kubernetes – Container orchestration
- Docker Swarm – Native clustering
- CI/CD Integration – GitHub Actions, Jenkins
- Security – Image scanning, secrets management
- Monitoring – Prometheus, Grafana
Tips Belajar Docker
- Mulai dengan Docker Desktop – GUI yang user-friendly
- Praktik dengan project nyata – Dockerize aplikasi Anda
- Pelajari Docker Compose – Untuk multi-service apps
- Gunakan official images – Dari Docker Hub
- Optimasi image size – Multi-stage builds, alpine base
- Baca Docker Docs – docs.docker.com
Tools yang Dibutuhkan
| Tool | Deskripsi |
|---|---|
| Docker Desktop | GUI untuk Docker (Windows/Mac) |
| Docker Engine | Runtime Docker (Linux) |
| Docker Compose | Multi-container orchestration |
| VS Code + Docker extension | Code editor dengan Docker support |
| Git | Version control |
Kesimpulan
Docker adalah skill wajib untuk developer modern. Dengan containerization, deployment menjadi konsisten dan mudah. Mulai dari dasar, dockerize aplikasi Anda, dan terus belajar!
“Docker is the world’s leading software containerization platform.” – Docker




