Để cài Docker Compose trên Ubuntu, bạn có thể dùng gói docker-compose-plugin từ kho APT chính thức của Docker. Theo tài liệu Docker, plugin cần Docker Engine và Docker CLI; sau khi cài, kiểm tra bằng docker compose version. Hướng dẫn này chọn cách cài qua kho phần mềm để thuận tiện cập nhật, thay vì tải riêng một tệp thực thi rồi tự quản lý các lần nâng cấp.
Compose cho phép mô tả các dịch vụ, mạng và volume của ứng dụng trong một tệp YAML, rồi khởi động chúng bằng một lệnh. Với người mới, nên học theo hai mốc riêng: xác nhận Engine chạy được container trước, sau đó mới kiểm tra Compose. Cách chia bước này giúp khoanh vùng trục trặc thay vì thay đổi nhiều thành phần cùng lúc. Các lệnh dưới đây là hướng dẫn thực hành, không phải kết quả thử nghiệm trên máy của người viết.
1. Chuẩn bị và cài Docker từ kho chính thức
Nên bắt đầu trên một máy Ubuntu thử nghiệm và có quyền sudo. Nếu máy đã chạy Docker hoặc containerd cho ứng dụng khác, hãy kiểm kê, sao lưu và lên kế hoạch chuyển đổi trước. Docker liệt kê docker.io, docker-compose, docker-compose-v2, docker-doc, docker-buildx, podman-docker cùng containerd và runc là các gói có thể xung đột với bộ cài chính thức. Đừng gỡ hàng loạt trên máy đang phục vụ người dùng chỉ để làm theo bài.
Bước 1 — Trên máy phù hợp và chưa cấu hình kho Docker, thêm khóa ký và nguồn APT bằng các lệnh sau. Giữ nguyên các dòng nằm giữa EOF để shell điền mã bản Ubuntu và kiến trúc máy:
sudo apt update
sudo apt install ca-certificates curl
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
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
Bước 2 — Cài bộ gói chính thức. Nếu đã có Engine và CLI từ kho Docker, chỉ cần cài thêm plugin như nhánh thứ hai; không cần cài lại toàn bộ:
Máy mới:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Máy đã có Engine và CLI phù hợp:
sudo apt update
sudo apt install docker-compose-plugin
Bước 3 — Kiểm tra từng lớp:
sudo systemctl status docker
sudo docker run hello-world
sudo docker compose version
Nếu dịch vụ chưa chạy, dùng sudo systemctl start docker rồi kiểm tra lại. Theo Docker, hello-world tải image thử nghiệm, in thông báo xác nhận và thoát. Vì vậy, container thử nghiệm kết thúc không đồng nghĩa cài đặt thất bại. Lệnh cuối phải hiển thị thông tin phiên bản Compose; hãy ghi lại phiên bản thực tế thay vì đối chiếu với một số phiên bản cố định trong bài.

2. Tạo ứng dụng mẫu và kiểm tra trước khi chạy
Bài thử dưới đây dùng một dịch vụ web tên web. Đây là cấu hình minh họa để học thao tác, chưa phải cấu hình vận hành cho website thật. Docker Compose sử dụng tệp compose.yaml để khai báo ứng dụng; image chỉ định ảnh container và ports mô tả ánh xạ cổng. Ví dụ chọn cổng 8080 trên máy chủ và cổng 80 trong container.
Bước 4 — Tạo thư mục riêng và ghi tệp cấu hình. Chỉ thực hiện trong thư mục bài thử mới để tránh ghi đè tệp có sẵn:
mkdir compose-demo
cd compose-demo
cat > compose.yaml <<'EOF'
services:
web:
image: nginx
ports:
- "127.0.0.1:8080:80"
EOF
Địa chỉ 127.0.0.1 trong ví dụ giới hạn cổng được công bố vào loopback của máy Docker. Tài liệu Docker cảnh báo rằng bỏ địa chỉ máy chủ khỏi ánh xạ sẽ mặc định gắn vào mọi giao diện mạng; cổng công bố còn có thể vượt qua quy tắc UFW. Vì vậy, đừng đổi thành 8080:80 chỉ để truy cập thuận tiện từ Internet. Với VPS, bài thử này hướng đến kiểm tra ngay trên máy chủ, không yêu cầu sửa firewall hay cấu hình SSH.
Bước 5 — Đọc cấu hình đã được Compose xử lý trước khi khởi động:
sudo docker compose config
Nếu chỉ muốn xác thực cấu hình, dùng:
sudo docker compose config -q
Theo tài liệu tham chiếu, config hợp nhất cấu hình, giải quyết biến và chuyển cú pháp rút gọn sang dạng đầy đủ. Đây là bước kiểm tra mô hình cấu hình; đừng coi việc lệnh này không báo lỗi là bằng chứng ứng dụng đã phục vụ yêu cầu thành công.
Bước 6 — Khởi động rồi quan sát:
sudo docker compose up -d
sudo docker compose ps
sudo docker compose logs
Tùy chọn -d chạy container ở nền. Trên chính máy Docker, mở http://127.0.0.1:8080 để kiểm tra dịch vụ mẫu. Khi đọc kết quả, hãy đối chiếu cả trạng thái container và nhật ký. Nếu có lỗi, giữ nguyên thông báo để xác định bước gặp vấn đề, thay vì lập tức gỡ Docker hoặc xóa dữ liệu.

3. Xử lý quyền truy cập, cập nhật và hoàn tác
Hướng dẫn dùng sudo nhất quán vì quyền truy cập Docker cần được cân nhắc riêng. Docker cảnh báo nhóm docker trao quyền tương đương root; tài liệu bảo mật cũng yêu cầu chỉ cho người dùng đáng tin cậy điều khiển daemon. Nếu lệnh chạy được với sudo nhưng bị từ chối khi bỏ sudo, hãy xem lại quyền truy cập trước. Không nên mặc định thêm mọi tài khoản vào nhóm docker chỉ để bỏ một tiền tố lệnh.
Bước 7 — Khi kết thúc bài thử, đứng trong thư mục compose-demo và chạy:
sudo docker compose down
Theo tài liệu Docker, down mặc định dừng và xóa container cùng mạng của dự án. Dữ liệu nằm trong lớp ghi của container sẽ mất khi container bị xóa. Với ứng dụng cần lưu dữ liệu lâu dài, hãy thiết kế named volume hoặc bind mount trước khi vận hành; named volume được giữ qua chu kỳ down rồi up thông thường.
Đặc biệt tránh thêm -v vào lệnh down nếu chưa xác nhận dữ liệu có thể bỏ: tùy chọn này xóa cả named volume được khai báo trong dự án. Dọn ứng dụng mẫu cũng khác với gỡ plugin. Nếu chỉ muốn bỏ Compose, có thể dùng sudo apt remove docker-compose-plugin; không cần xóa các thư mục dữ liệu của Docker. Trên máy có ứng dụng khác, hãy rà soát phụ thuộc trước khi gỡ bất kỳ gói nào.
Để cập nhật plugin đã cài từ kho Docker, tài liệu hướng dẫn chạy sudo apt update rồi sudo apt install docker-compose-plugin. Sau đó kiểm tra lại sudo docker compose version và thử ứng dụng trong môi trường kiểm thử trước khi áp dụng cho dịch vụ quan trọng. Mốc hoàn thành bài học là hiểu được luồng khai báo, kiểm tra, khởi động, quan sát và dọn dự án; việc đưa ứng dụng thật lên Internet cần một cấu hình riêng cho quyền truy cập và dữ liệu.

Nguồn tham khảo
docker.com (13 tài liệu)
- /engine/install/ubuntu
- /compose/install/linux
- /compose
- /compose/intro/compose-application-model
- /engine/install/linux-postinstall
- /reference/compose-file/services
- /engine/network/port-publishing
- /reference/cli/docker/compose/config
- /reference/cli/docker/compose
- /reference/cli/docker/compose/up
- /engine/security
- /reference/cli/docker/compose/down
- /compose/gettingstarted

