Cài đặt Docker và Docker Compose trên Linux

Hướng dẫn cài đặt Docker và Docker Compose trên Linux (Ubuntu/Debian)

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.
Linux server chạy container production

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.

Cài đặt Docker Engine bằng apt 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.
Triển khai ứng dụng bằng docker compose

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.

Leave a Comment

Your email address will not be published. Required fields are marked *