Cara Install Docker di Ubuntu 22.04 untuk Production (Lengkap + Hardening)
Docker adalah container engine yang memungkinkan kita menjalankan aplikasi secara terisolasi dan portabel. Artikel ini membahas cara install Docker di Ubuntu 22.04 menggunakan repository resmi, konfigurasi dasar untuk production, hardening keamanan, serta troubleshooting umum yang sering terjadi.
Tutorial ini cocok untuk:
- VPS (DigitalOcean / Vultr / AWS / dll)
- Server lokal
- Deployment WordPress, Node.js, Laravel, dan aplikasi lainnya
1. Kenapa Install Docker dari Repository Resmi?
Banyak orang install Docker dengan:
sudo apt install docker.io
"Ini kurang direkomendasikan untuk production karena versinya sering tertinggal. Di tutorial ini kita pakai repository resmi Docker agar update lebih cepat, stabil, dan security patch lebih terjaga"
2. Update System
Selalu update server sebelum install:
sudo apt update && sudo apt upgrade -y
Opsional (bersihkan package lama):
sudo apt autoremove -y
3. Install Dependencies
sudo apt install ca-certificates curl gnupg lsb-release -y
4. Tambahkan GPG Key Docker
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Berikan permission:
sudo chmod a+r /etc/apt/keyrings/docker.gpg
5. Tambahkan Repository Docker
echo \
"deb [arch=$(dpkg --print-architecture) \
signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Update kembali:
sudo apt update
6. Install Docker Engine
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Cek versi:
docker --version
Cek status:
sudo systemctl status docker
Jika belum aktif:
sudo systemctl enable docker
sudo systemctl start docker
7. Jalankan Docker Tanpa sudo
Tambahkan user ke group docker:
sudo usermod -aG docker $USER
Logout dan login kembali, lalu test:
docker run hello-world
Jika muncul pesan sukses, Docker berhasil terpasang dengan benar.
8. Basic Hardening Docker (Wajib untuk Production)
8.1 Nonaktifkan Root Login via SSH
Edit konfigurasi SSH:
sudo nano /etc/ssh/sshd_config
Ubah/set:
PermitRootLogin no
Restart SSH:
sudo systemctl restart ssh
8.2 Aktifkan Firewall (UFW)
sudo ufw allow OpenSSH
sudo ufw enable
Cek status:
sudo ufw status
8.3 Batasi Docker Exposed Port
Hindari expose port ke publik kalau tidak perlu. Contoh yang perlu dihindari:
-p 0.0.0.0:80:80
Jika ingin hanya lokal (lalu reverse proxy via Nginx), gunakan:
-p 127.0.0.1:80:80
8.4 Enable Restart Policy
Gunakan restart policy agar container otomatis hidup setelah reboot:
--restart unless-stopped
Contoh:
docker run -d \
--name nginx \
-p 80:80 \
--restart unless-stopped \
nginx
9. Install Docker Compose (Sudah Termasuk Plugin)
Di Ubuntu 22.04, Docker Compose umumnya sudah terinstall sebagai plugin. Cek:
docker compose version
Jika error, install ulang plugin:
sudo apt install docker-compose-plugin -y
10. Contoh Setup Docker Compose untuk Production
Buat folder project:
mkdir myapp && cd myapp
Buat file compose:
nano docker-compose.yml
Isi contoh sederhana:
version: '3.9'
services:
app:
image: nginx:latest
container_name: my-nginx
restart: unless-stopped
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
Jalankan:
docker compose up -d
Stop:
docker compose down
11. Troubleshooting Umum
11.1 Permission Denied
Error contoh: "Got permission denied while trying to connect to the Docker daemon"
Solusi:
sudo usermod -aG docker $USER
Logout-login, lalu coba lagi.
11.2 Docker Service Failed
Cek log:
journalctl -u docker.service
Restart service:
sudo systemctl restart docker
11.3 Port Already in Use
Cek siapa yang memakai port 80:
sudo lsof -i :80
Matikan service lama atau ganti port di mapping Docker.
12. Best Practice Production
- Gunakan reverse proxy (mis. Nginx) + SSL (Let’s Encrypt)
- Gunakan Docker network custom untuk isolasi service
- Jangan jalankan container sebagai root jika memungkinkan
- Backup volume secara berkala
- Gunakan update strategy yang aman (manual terjadwal / watchtower jika paham risikonya)
13. Kesimpulan
Install Docker di Ubuntu 22.04 untuk production sebaiknya menggunakan repository resmi agar stabil dan aman. Pastikan kamu menerapkan restart policy, firewall, hardening SSH, dan tidak expose port sembarangan.