Mata Pelajaran Pilihan
Docker Container Management
Panduan instalasi dan manajemen Docker container di Linux Server untuk deployment aplikasi yang efisien dan terisolasi.
Docker Container Management
Docker memungkinkan deployment aplikasi dalam container yang terisolasi, konsisten di berbagai environment, dan mudah di-manage.
Mengapa Docker?
- Isolasi — setiap service berjalan di container terpisah
- Portabilitas — sama di development, staging, dan production
- Efisien — lebih ringan dari VM
- Mudah rollback — tinggal ganti image version
- Docker Compose — manage multi-container dengan satu file
Instalasi Docker
# Update package list
apt update
# Install dependency
apt install -y ca-certificates curl gnupg
# Tambah Docker GPG key
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
# Tambah repository Docker
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo $VERSION_CODENAME) stable" \
| tee /etc/apt/sources.list.d/docker.list > /dev/null
# Install Docker
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Verifikasi
docker --version
docker compose version
Docker Dasar
# Pull image
docker pull nginx:latest
# Run container
docker run -d \
--name web-server \
-p 80:80 \
--restart unless-stopped \
nginx:latest
# List container yang berjalan
docker ps
# Stop & remove container
docker stop web-server
docker rm web-server
Docker Compose
Contoh: Web App + Database
# docker-compose.yml
services:
app:
image: php:8.2-fpm
container_name: php-app
volumes:
- ./src:/var/www/html
depends_on:
- db
networks:
- app-network
nginx:
image: nginx:alpine
container_name: nginx
ports:
- "80:80"
volumes:
- ./src:/var/www/html
- ./nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- app
networks:
- app-network
db:
image: mariadb:10.11
container_name: mariadb
environment:
MYSQL_ROOT_PASSWORD: rahasia
MYSQL_DATABASE: myapp
MYSQL_USER: appuser
MYSQL_PASSWORD: rahasia123
volumes:
- db-data:/var/lib/mysql
networks:
- app-network
volumes:
db-data:
networks:
app-network:
driver: bridge
# Start semua service
docker compose up -d
# Stop semua service
docker compose down
# Lihat logs
docker compose logs -f
Monitoring Container
# Resource usage realtime
docker stats
# Logs container
docker logs -f container-name
# Masuk ke dalam container
docker exec -it container-name bash
Tips Production
Selalu set restart: unless-stopped di compose agar container otomatis start setelah server reboot.
# Cleanup resource tidak terpakai
docker system prune -a
# Backup volume
docker run --rm \
-v my-data:/data \
-v $(pwd):/backup \
alpine tar czf /backup/data-backup.tar.gz /data
Referensi
Sudah Selesai Mempelajari Modul Ini?
Tandai modul ini untuk mencatat progress belajar Anda.