Hướng Dẫn Cài Docker Compose Trên VPS Thành Công 100%

Bạn vừa thuê một VPS mới và muốn chạy đồng thời cả Nginx, Node.js lẫn MySQL nhưng lười phải cấu hình thủ công từng dịch vụ? Docker Compose sinh ra để giải quyết việc này chỉ bằng một file cấu hình duy nhất. Thay vì gõ hàng tá lệnh docker run dài dằng dặc, bạn chỉ cần một lệnh để khởi chạy toàn bộ hệ thống.

Hướng dẫn cài Docker Compose trên VPS

1. Docker Compose là gì và tại sao bạn cần nó trên VPS?

Docker Compose là công cụ giúp bạn định nghĩa và vận hành các ứng dụng Docker gồm nhiều container (multi-container) thông qua một file cấu hình định dạng YAML duy nhất (thường là docker-compose.yml). Thay vì quản lý riêng lẻ, Docker Compose giúp khởi chạy, thiết lập mạng liên kết và quản lý toàn bộ hệ thống chỉ bằng một câu lệnh.

Để dễ hình dung, hãy so sánh hai cách triển khai thực tế:

  • Chạy bằng docker run thủ công: Bạn phải gõ các câu lệnh dài loằng ngoằng với đầy đủ tham số port, volume, network. Chỉ cần gõ sai một ký tự là lỗi, và đặc biệt, khi VPS reboot, bạn phải nhớ chạy lại hoặc tự viết script khởi động.
  • Chạy bằng docker-compose up -d: Toàn bộ cấu hình nằm gọn trong file YAML. Khởi chạy, dừng, xóa bỏ đều chỉ bằng một lệnh ngắn gọn. Config rõ ràng, dễ dàng backup và chia sẻ cho team.

Lưu ý nhỏ: Nếu trước đây bạn quen với lệnh docker-compose (có dấu gạch ngang), đó là bản V1 đã bị khai tử. Bản V2 hiện tại bỏ dấu gạch ngang, chạy bằng lệnh docker compose với hiệu năng tốt hơn hẳn.

2. Chuẩn bị những gì trước khi cài Docker Compose trên VPS?

Để cài đặt Docker Compose thành công, bạn cần chuẩn bị một VPS chạy hệ điều hành Linux (khuyên dùng Ubuntu 22.04 LTS hoặc 24.04 LTS), quyền truy cập root hoặc người dùng có đặc quyền sudo, và máy chủ đã được cài đặt sẵn Docker Engine.

Một yếu tố cực kỳ quan trọng nhưng nhiều người hay bỏ qua: Công nghệ ảo hóa của VPS. Docker cần ảo hóa tài nguyên ở mức kernel. Nếu VPS của bạn dùng công nghệ ảo hóa kém (như OpenVZ cũ), việc chạy nhiều container sẽ nhanh chóng dẫn đến nghẽn CPU/RAM và lỗi không thể khởi động.

Nếu bạn chưa có máy chủ hoặc VPS hiện tại quá yếu, hãy nâng cấp ngay lên hệ thống VPS của InterData. VPS InterData sở hữu công nghệ ảo hóa KVM tiên tiến, 100% ổ cứng NVMe chuyên dụng giúp tốc độ đọc ghi dữ liệu siêu tốc, cực kỳ phù hợp để vận hành các hệ thống Docker Container nặng mà không lo giật lag.

Chuẩn bị trước khi cài Docker Compose trên VPS

3. Hướng dẫn cài Docker Compose trên VPS Ubuntu chi tiết (Phiên bản mới nhất)

Dưới đây là các bước cài đặt theo phương pháp Docker APT Repository. Đây là cách khuyên dùng vì nó giúp bạn dễ dàng cập nhật lên bản mới nhất chỉ qua lệnh apt upgrade, thay vì phải tải file nhị phân thủ công bằng curl như cách làm cũ.

Bước 1: Cập nhật chỉ mục gói hệ thống

sudo apt update && sudo apt upgrade -y

Bước 2: Cài đặt các gói hỗ trợ tải qua HTTPS

sudo apt install apt-transport-https ca-certificates curl software-properties-common -y

Bước 3: Thêm GPG Key chính thức của Docker

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

Bước 4: Thiết lập Repository cho 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" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Bước 5: Cài đặt Docker Engine và Docker Compose Plugin

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

Lưu ý kỹ thuật: Cài đặt qua gói docker-compose-plugin sẽ đưa Docker Compose V2 vào đúng thư mục hệ thống của Docker (/usr/libexec/docker/cli-plugins/). Việc này giúp tránh mọi xung đột phân quyền và cập nhật cực kỳ đơn giản sau này.

4. Kiểm tra cài đặt và chạy thử dự án đầu tiên

Sau khi cài xong, hãy xác nhận phiên bản bằng lệnh:

docker compose version

Nếu terminal trả về kết quả tương tự như Docker Compose version vX.XX.X là bạn đã thành công.

Kiểm tra phiên bản Docker Compose

Bây giờ, hãy thử deploy một container Nginx đơn giản để xem mọi thứ hoạt động ra sao:

  1. Tạo thư mục dự án và di chuyển vào:
mkdir nginx-test && cd nginx-test
  1. Tạo file cấu hình:
nano docker-compose.yml
  1. Dán nội dung sau vào file (rất ngắn gọn, chuẩn xác):
services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"
  1. Khởi chạy ở chế độ chạy ngầm (detached mode):
sudo docker compose up -d

Mở trình duyệt và truy cập vào http://IP_VPS:8080. Nếu thấy trang chào mừng mặc định của Nginx, hệ thống của bạn đã sẵn sàng hoạt động!

5. Khắc phục nhanh 3 lỗi thường gặp khi dùng Docker Compose trên VPS

Trong quá trình vận hành thực tế, có 3 cái “bẫy” mà hầu như ai cũng từng vấp phải khi mới cài Docker Compose:

Lỗi 1: Permission Denied (Lỗi phân quyền khi chạy lệnh không có sudo)

  • Lý do: Tài khoản user hiện tại chưa được thêm vào group docker, nên hệ thống không có quyền truy cập socket của Docker.
  • Cách xử lý nhanh:

sudo usermod -aG docker $USER

newgrp docker

(Sau khi chạy lệnh, hãy đăng xuất và đăng nhập lại để quyền có hiệu lực).

Lỗi 2: Command not found “docker-compose”

  • Lý do: Bạn quen gõ lệnh có dấu gạch ngang của V1, nhưng hệ thống vừa cài là V2 (dạng plugin).
  • Cách xử lý: Hãy dùng docker compose (dùng khoảng trắng thay vì gạch ngang). Trong trường hợp bắt buộc phải dùng lệnh cũ vì một số script có sẵn yêu cầu dấu gạch ngang, bạn có thể tạo một shortcut liên kết:
sudo ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/local/bin/docker-compose

Lỗi 3: Port conflict (Trùng cổng kết nối)

  • Lý do: Cổng bạn khai báo trong file cấu hình (ví dụ cổng 80 hoặc 8080) đã bị một dịch vụ khác trên VPS chiếm dụng trước đó.
  • Cách xử lý: Dùng lệnh sudo netstat -tulpn | grep :8080 để tìm ra service đang chiếm cổng và quyết định dừng nó, hoặc đổi cổng bên trái trong phần ports của file docker-compose.yml thành một cổng trống khác (ví dụ: "8081:80").

6. Các câu hỏi thường gặp khi cài đặt Docker Compose trên VPS (FAQ)

Q1: Có nên cài Docker Compose bằng Snap trên Ubuntu VPS không?

A: Bạn không nên cài Docker/Docker Compose qua Snap trên VPS. Bản cài đặt qua Snap hoạt động trong môi trường sandbox cô lập, thường gây ra các lỗi nghiêm trọng về phân quyền hệ thống tập tin, không đọc được file cấu hình ngoài và khó khăn trong việc kết nối mạng nội bộ giữa các container. Cách tốt nhất luôn là cài qua APT Repository chính thức của Docker.

Q2: Docker Compose V1 và V2 khác nhau như thế nào?

A: Điểm khác biệt lớn nhất là Docker Compose V1 được viết bằng Python, chạy độc lập qua lệnh docker-compose và hiện tại đã bị Docker khai tử (deprecated). Docker Compose V2 được viết bằng ngôn ngữ Go, tích hợp trực tiếp vào Docker CLI như một plugin hệ thống và khởi chạy bằng lệnh docker compose (không có dấu gạch ngang), mang lại tốc độ xử lý nhanh hơn và tính bảo mật cao hơn.

Q3: Làm thế nào để gỡ cài đặt hoàn toàn Docker Compose khỏi VPS?

A: Nếu cài đặt dưới dạng APT Plugin, bạn chỉ cần chạy lệnh sudo apt purge docker-compose-plugin để gỡ bỏ. Đối với các file cấu hình và dữ liệu container cũ, bạn có thể dọn dẹp bằng lệnh docker system prune -a --volumes trước khi gỡ cài đặt.


Việc thiết lập Docker Compose trên VPS giúp tối ưu hóa đáng kể quy trình triển khai và vận hành ứng dụng của bạn. Tuy nhiên, để Docker hoạt động mượt mà và bền bỉ dưới mọi mức tải, bạn cần một nền tảng VPS có cấu hình phần cứng mạnh mẽ cùng đường truyền mạng trong nước ổn định. Đừng ngần ngại liên hệ với đội ngũ kỹ thuật của InterData để được hỗ trợ tư vấn dòng VPS chuyên dụng tối ưu nhất cho Docker ngay hôm nay!