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.