Docker untuk Pemula dalam 10 Menit
Docker mengubah cara developer membangun, menguji, dan mendeploy aplikasi dengan mengisolasi kode dalam container. Masalah klasik "works on my machine" dieliminasi karena lingkungan runtime terenkapsulasi bersama dependensinya. Artikel ini memandu Anda dari instalasi hingga menjalankan container produksi-ready dalam waktu singkat.
Prasyarat & Persiapan
Sebelum memulai, pastikan sistem Anda memenuhi spesifikasi berikut:
- OS: Ubuntu 20.04/22.04, Debian 11, atau macOS 12+ (Docker Desktop).
- Hardware: Minimal 4GB RAM, 20GB disk space.
- Akses: Hak root atau sudo.
- Akun: Akun Docker Hub (gratis) untuk push/pull image.
Catatan: Jika Anda menggunakan Windows, aktifkan WSL2 (Windows Subsystem for Linux) untuk performa optimal.
Langkah Demi Langkah
Step 1: Instalasi Docker Engine
Untuk Linux (Ubuntu/Debian), gunakan repository resmi:
# Hapus versi lama jika ada
sudo apt-get remove docker docker-engine docker.io containerd runc
# Update package index
sudo apt-get update
# Instal dependensi
sudo apt-get install ca-certificates curl gnupg lsb-release
# Tambahkan GPG key Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Setup repository
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Instal Docker Engine
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
# Verifikasi instalasi
sudo docker run hello-world
Untuk macOS/Windows, unduh Docker Desktop dan jalankan installer.
Step 2: Verifikasi & Konfigurasi Awal
Pastikan daemon Docker berjalan dan user Anda bisa mengakses tanpa sudo:
# Cek status service
sudo systemctl status docker
# Tambahkan user ke grup docker (opsional, untuk kenyamanan)
sudo usermod -aG docker $USER
newgrp docker
# Verifikasi versi
docker --version
docker compose version
Step 3: Membuat Dockerfile Sederhana
Buat direktori proyek dan file Dockerfile untuk aplikasi Python Flask:
mkdir -p ~/docker-demo && cd ~/docker-demo
Buat file app.py:
from flask import Flask
import os
app = Flask(__name__)
@app.route('/')
def home():
return f"Hello from Docker! Container ID: {os.getenv('CONTAINER_ID', 'unknown')}"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
Buat requirements.txt:
flask==2.3.3
Buat Dockerfile:
# Gunakan image base Python resmi
FROM python:3.11-slim
# Set working directory
WORKDIR /app
# Salin dependensi dan instal
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Salin kode aplikasi
COPY . .
# Set environment variable
ENV CONTAINER_ID="demo-container"
# Ekspos port
EXPOSE 5000
# Jalankan aplikasi
CMD ["python", "app.py"]
Step 4: Build & Run Container
Build image dan jalankan container:
# Build image dengan tag
docker build -t my-flask-app:1.0 .
# Jalankan container dengan port mapping
docker run -d \
--name flask-demo \
-p 5000:5000 \
-e CONTAINER_ID="prod-env" \
my-flask-app:1.0
# Verifikasi container berjalan
docker ps
# Test endpoint
curl http://localhost:5000
Output yang diharapkan:
Hello from Docker! Container ID: prod-env
Step 5: Manajemen Container
Perintah dasar untuk mengelola container:
# Lihat log aplikasi
docker logs flask-demo
# Masuk ke container (untuk debugging)
docker exec -it flask-demo bash
# Stop container
docker stop flask-demo
# Hapus container
docker rm flask-demo
# Hapus image
docker rmi my-flask-app:1.0
Tips Optimasi & Keamanan
1. Gunakan Multi-Stage Build
Kurangi ukuran image dengan memisahkan build dan runtime:
# Stage 1: Build
FROM python:3.11-slim AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --prefix=/install -r requirements.txt
# Stage 2: Runtime
FROM python:3.11-slim
WORKDIR /app
COPY --from=builder /install /usr/local
COPY . .
CMD ["python", "app.py"]
2. Nonaktifkan Root User
Jalankan container sebagai user non-root:
RUN groupadd -r appuser && useradd -r -g appuser appuser
USER appuser
3. Gunakan .dockerignore
Hindari menyalin file yang tidak perlu:
.git
.env
__pycache__
*.pyc
venv/
node_modules/
4. Scan Vulnerability
Gunakan docker scout atau trivy untuk deteksi CVE:
# Instal trivy
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin
# Scan image
trivy image my-flask-app:1.0
Troubleshooting Error Umum
"permission denied while trying to connect to Docker daemon"
Solusi: Tambahkan user ke grup docker atau gunakan sudo.
sudo usermod -aG docker $USER
newgrp docker
"port is already allocated"
Solusi: Hapus container yang menggunakan port tersebut.
# Cari container yang menggunakan port 5000
docker ps | grep 5000
# Hapus container
docker stop <container_id>
docker rm <container_id>
"no space left on device"
Solusi: Bersihkan image dan container yang tidak terpakai.
# Hapus semua resource yang tidak terpakai
docker system prune -a --volumes
# Cek penggunaan disk
docker system df
"context deadline exceeded" saat pull image
Solusi: Cek koneksi internet atau gunakan mirror registry.
# Edit /etc/docker/daemon.json
{
"registry-mirrors": ["https://mirror.gcr.io"]
}
# Restart docker
sudo systemctl restart docker
Kesimpulan
Docker memungkinkan Anda membangun aplikasi yang konsisten di semua lingkungan. Dalam 10 menit, Anda telah menginstal Docker, membuat Dockerfile, build image, dan menjalankan container. Langkah selanjutnya: pelajari Docker Compose untuk multi-container, Docker Swarm/Kubernetes untuk orchestration, dan CI/CD pipeline untuk automasi deployment.
Untuk dokumentasi lengkap, kunjungi Docker Docs. Jika Anda membutuhkan bantuan dalam merancang arsitektur container atau mengoptimalkan Dockerfile, konsultasikan dengan tim DevOps atau gunakan tool AI seperti Claude Pro untuk review kode.