Bạn đang cần dựng nhanh môi trường chạy ứng dụng trên Linux nhưng muốn giữ tính ổn định, dễ backup, dễ deploy? Bộ đôi Docker Engine + Docker Compose v2 là lựa chọn gần như tiêu chuẩn cho dev/server hiện nay. Bài viết này hướng dẫn cài đặt theo best practice từ Docker Docs, kèm checklist kiểm tra và xử lý lỗi thường gặp.
Khi nào nên dùng Docker + Docker Compose?
- Chạy nhiều service trên cùng một host (web, db, cache, queue).
- Muốn môi trường dev/staging/prod đồng nhất.
- Triển khai ứng dụng nhanh, rollback dễ.
- Giảm xung đột dependency giữa các ứng dụng.

Prerequisites trước khi cài đặt
- OS: Ubuntu 22.04/24.04 (hoặc distro Linux tương đương).
- User có quyền sudo.
- Đã gỡ các package Docker cũ/conflict (docker.io, podman-docker, docker-compose cũ…).
- Mở outbound internet đến download.docker.com.
Lưu ý firewall: Docker có thể bypass một số rule của ufw/firewalld khi publish port. Với production, nên quản lý filtering qua chain DOCKER-USER và policy mạng rõ ràng.
Bước 1: Gỡ package xung đột
sudo apt remove docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc -y
Nếu hệ thống báo “package not installed” thì có thể bỏ qua. Mục tiêu là đảm bảo host sạch trước khi cài bản official từ Docker repository.

Bước 2: Add Docker apt repository (Ubuntu/Debian)
sudo apt update
sudo apt install ca-certificates curl -y
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list >/dev/null
sudo apt update
Bước 3: Cài Docker Engine + Compose plugin
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Gói docker-compose-plugin là Compose v2 (chạy bằng lệnh docker compose …, không phải binary cũ docker-compose).
Bước 4: Verify cài đặt
sudo systemctl status docker --no-pager
sudo docker run hello-world
docker compose version
- hello-world chạy thành công = Docker Engine OK.
- docker compose version ra phiên bản = Compose plugin OK.

Bước 5: Cho user chạy Docker không cần sudo (optional)
sudo usermod -aG docker $USER
newgrp docker
docker ps
Ví dụ nhanh: chạy Nginx bằng Docker Compose
mkdir -p ~/compose-nginx && cd ~/compose-nginx
cat > compose.yaml <<'EOF'
services:
web:
image: nginx:stable-alpine
container_name: web-nginx
ports:
- "8080:80"
restart: unless-stopped
EOF
docker compose up -d
docker compose ps
curl -I http://127.0.0.1:8080
Troubleshooting thường gặp
1) Cannot connect to the Docker daemon
- Kiểm tra service: sudo systemctl status docker
- Start service: sudo systemctl start docker
- Kiểm tra quyền user group docker.
2) docker compose không tồn tại
- Chưa cài docker-compose-plugin.
- Fix: sudo apt install docker-compose-plugin -y.
3) Port conflict
- Đổi host port trong compose.yaml (vd: 8081:80).
- Kiểm tra port chiếm dụng: sudo ss -ltnp | grep :8080.
Best practices cho production
- Pin version image cụ thể, tránh latest.
- Dùng volume cho data persistence.
- Set restart policy unless-stopped.
- Externalize config qua env file/secret manager.
- Định kỳ update Docker Engine và Compose plugin từ official repo.
Kết luận
Cài Docker + Docker Compose trên Linux không khó, nhưng cần làm đúng thứ tự: clean old packages → add official repo → install engine + compose plugin → verify → harden. Làm chuẩn ngay từ đầu sẽ giúp bạn deploy nhanh, ít lỗi, và dễ vận hành lâu dài.
