Chuyển đến nội dung chính

Cách cài đặt Docker Compose: Linux, macOS và Windows

Hướng dẫn thực tế cài đặt Docker Compose v2 trên Linux, macOS và Windows — bao gồm cả phương pháp qua trình quản lý gói và thủ công, bước xác minh, nâng cấp và khắc phục lỗi thường gặp.
· 9 phút đọc

Khám phá cùng AI

Bạn đã chạy Docker và quen với các lệnh cơ bản, nhưng mệt mỏi vì phải khởi động từng container một?

Docker Compose là công cụ cho phép bạn định nghĩa và chạy các ứng dụng đa container từ một tệp YAML duy nhất. Phần gây nhầm lẫn là hiện có hai phiên bản: bản nhị phân độc lập cũ (v1) và plugin CLI mới hơn (v2). Hầu hết bài hướng dẫn cài đặt không nói rõ họ dùng phiên bản nào, khiến bạn làm theo các bước không khớp với môi trường của mình.

Docker Compose v2 là một plugin đi kèm với các bản cài đặt Docker hiện đại, giúp đơn giản hóa cách bạn cài đặt, chạy và xác minh. Quy trình không còn thủ công như trước.

Trong bài viết này, tôi sẽ hướng dẫn bạn cách cài đặt Docker Compose trên Linux, macOS và Windows — theo cách đúng, dùng v2.

Bạn còn mới với các khái niệm ảo hóa và container? Hãy đọc bài Docker cho Người mới bắt đầu gần đây của chúng tôi để thực hành.

Trước khi cài đặt Docker Compose

Trước hết, bạn cần Docker Engine trên máy. Docker Compose không chạy độc lập — nó cần Docker để hoạt động.

Chạy lệnh này để kiểm tra phiên bản Docker:

docker --version

Installed Docker version

Phiên bản Docker đã cài đặt

Nếu Docker chưa được cài, hãy dừng lại và cài trước. Nếu đã cài, bạn có thể kiểm tra Compose đã sẵn có chưa:

docker compose version

Installed Docker Compose version

Phiên bản Docker Compose đã cài đặt

Nếu lệnh trả về một số phiên bản, bạn xong rồi — Compose v2 đã đi kèm với bản cài Docker của bạn. Bạn có thể chuyển thẳng tới phần xác minh.

Nếu thay vào đó trả về thông báo không tìm thấy lệnh, hãy đọc tiếp.

Đây là điểm khác biệt quan trọng bạn cần biết:

  • Docker Compose v1 là bản nhị phân độc lập cũ. Bạn gọi bằng docker-compose (có dấu gạch nối). Nó đã bị khai tử và không còn được bảo trì.

  • Docker Compose v2 là plugin CLI đi kèm với Docker hiện đại. Bạn gọi bằng docker compose (không có dấu gạch nối).

Nếu bạn dùng bản Docker mới, gần như chắc chắn đã có v2. Phần còn lại của bài viết giả định dùng v2.

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

Trên Linux, có hai cách để cài Docker Compose. Cách đầu dùng kho chính thức của Docker — được khuyến nghị. Cách thứ hai là cài thủ công, hữu ích khi bạn không thể dùng trình quản lý gói hoặc cần phiên bản cụ thể.

Cách 1: Dùng kho chính thức của Docker (khuyến nghị)

Cách này giữ Compose gắn với bản cài Docker của bạn, nên các bản cập nhật luôn đồng bộ.

Nếu bạn chưa cài Docker Engine, hãy thiết lập kho apt chính thức của Docker trước:

# Add Docker's GPG key
sudo apt-get update
sudo apt-get 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

# Add the repository
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-get update

Giờ hãy cài Docker Engine và plugin Compose cùng lúc:

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

Gói docker-compose-plugin cung cấp lệnh CLI docker compose. Xác minh nó hoạt động:

docker compose version

Docker Compose version on Ubuntu VM

Phiên bản Docker Compose trên máy ảo Ubuntu

Vậy là xong.

Cách 2: Cài thủ công (bản nhị phân độc lập)

Dùng cách này khi bạn cần một phiên bản Compose cụ thể, hoặc khi môi trường không hỗ trợ kho của Docker.

Bắt đầu bằng cách tải bản phát hành mới nhất trực tiếp từ GitHub. Thay v5.0.1 bằng phiên bản bạn cần:

DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose

Cấp quyền thực thi cho tệp nhị phân:

chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose

Và cuối cùng, xác minh cài đặt:

docker compose version

Docker Compose version on Ubuntu VM (2)

Phiên bản Docker Compose trên máy ảo Ubuntu

Điều cần lưu ý là cài thủ công sẽ không tự động cập nhật. Nếu bạn cài một tệp nhị phân rồi quên, bạn có thể dùng phiên bản đã lỗi thời có lỗi hoặc vấn đề bảo mật. Nếu chọn cách này, hãy định kỳ kiểm tra trang phát hành Docker Compose.

Cài đặt Docker Compose trên macOS

Trên macOS, bạn không cần cài Docker Compose riêng — nó đi kèm với Docker Desktop.

Tải Docker Desktop từ trang chính thức của Docker. Hãy chọn đúng phiên bản cho chip của bạn — Apple Silicon (M1–M5) hoặc Intel.

Sau khi cài đặt, mở Docker Desktop và chờ nó khởi động xong. Sau đó xác minh Compose sẵn sàng bằng lệnh sau:

docker compose version

Docker Compose version on macOS

Phiên bản Docker Compose trên macOS

Vậy là xong. Compose v2 đã sẵn sàng.

Tùy chọn: Cài qua Homebrew

Nếu bạn thích quản lý công cụ bằng Homebrew và không muốn giao diện Docker Desktop đầy đủ, bạn có thể cài Docker và Compose qua đó:

brew install docker
brew install docker-compose

Nếu chọn cách này, lưu ý Homebrew cài Docker Engine mà không có ứng dụng Desktop. Điều này phù hợp khi dùng CLI, nhưng bạn sẽ thiếu các tính năng như Docker Dashboard và cập nhật tự động. Với đa số người dùng macOS, Docker Desktop là con đường dễ hơn.

Cài đặt Docker Compose trên Windows

Tương tự macOS, Windows có Docker Compose tự động thông qua Docker Desktop. Không cần cài riêng.

Trước khi cài Docker Desktop, bạn cần bật WSL2 (Windows Subsystem for Linux 2). WSL2 cho phép Docker chạy nhân Linux thực trên Windows, đây là cách container hoạt động trên nền tảng này. Để bật, mở PowerShell với quyền Quản trị viên và chạy:

wsl --install

Khởi động lại máy khi được yêu cầu. Sau đó tải và cài Docker Desktop từ trang chính thức của Docker.

Trong quá trình cài đặt, đảm bảo tích chọn tuỳ chọn "Use WSL2 instead of Hyper-V". Khi Docker Desktop đã chạy, hãy xác minh Compose sẵn sàng — bạn có thể làm điều này trong PowerShell hoặc terminal WSL:

docker compose version

Các vấn đề quyền truy cập thường gặp

Nếu bạn gặp lỗi "permission denied", thường do một trong hai nguyên nhân:

  • Docker Desktop chưa chạy. Nó cần hoạt động trong khay hệ thống trước khi các lệnh docker hoạt động.
  • Người dùng của bạn chưa thuộc nhóm phù hợp. Trong WSL, hãy đảm bảo người dùng Linux của bạn có quyền truy cập socket Docker. Bạn có thể khắc phục bằng cách chạy terminal WSL với quyền Quản trị viên, hoặc thêm người dùng vào nhóm docker bên trong WSL:
sudo usermod -aG docker $USER

Giờ chỉ cần đăng xuất và đăng nhập lại WSL để thay đổi có hiệu lực.

Xác minh cài đặt Docker Compose

Sau khi cài Docker Compose, chạy lệnh này để xác nhận mọi thứ hoạt động:

docker compose version

Bạn sẽ thấy đầu ra tương tự như sau:

Installed Compose version

Phiên bản Compose đã cài đặt

Số phiên bản chính xác sẽ khác tùy thời điểm bạn đọc, nhưng miễn là bạn thấy v5.0.1 hoặc mới hơn, là ổn.

Nếu bạn thấy docker compose: command not found, nghĩa là Compose chưa được cài hoặc chưa nằm trong PATH. Chuyển xuống phần khắc phục sự cố bên dưới.

docker compose vs docker-compose

Bạn có thể thấy một số bài viết dùng docker-compose có dấu gạch nối. Khác biệt như sau:

  • docker-compose là lệnh v1 cũ. Nó là tệp nhị phân Python độc lập, cài riêng với Docker.

  • docker compose (không có dấu gạch nối) là plugin CLI v2, tích hợp trực tiếp vào Docker CLI.

Docker đã bỏ hỗ trợ v1 vào năm 2023, nên docker-compose không còn được bảo trì. Nếu bạn vẫn còn cài, có thể kiểm tra nó trỏ tới phiên bản nào:

docker-compose --version

Nếu trả về phiên bản 1.x.x, bạn đang chạy tệp nhị phân cũ. Hãy gỡ nó và dùng docker compose về sau. Cú pháp gần như giống hệt, nhưng v2 nhanh hơn và đang được bảo trì.

Nâng cấp Docker Compose

Cách nâng cấp Compose phụ thuộc vào cách bạn đã cài nó.

Trên macOS và Windows, Docker Desktop xử lý mọi thứ cho bạn, nên chỉ cần mở ứng dụng, vào Settings > Software Updates, và cập nhật nếu cần. Compose sẽ nâng cấp cùng Docker.

Trên Linux dùng trình quản lý gói, chạy các lệnh sau:

sudo apt-get update
sudo apt-get upgrade docker-compose-plugin

Lệnh này lấy phiên bản mới nhất từ kho chính thức của Docker.

Nếu bạn cài thủ công, bạn sẽ cần lặp lại bước tải với số phiên bản mới. Kiểm tra trang phát hành Docker Compose để biết phiên bản mới nhất, rồi thay thế tệp nhị phân:

curl -SL https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose

Sau bất kỳ lần nâng cấp nào, chỉ cần xác minh phiên bản mới đang hoạt động:

docker compose version

Không còn gì thêm.

Gỡ cài đặt Docker Compose

Các bước gỡ cài đặt phụ thuộc vào cách bạn đã cài Compose lúc đầu.

Nếu bạn cài qua trình quản lý gói trên Linux, hãy gỡ plugin bằng lệnh này:

sudo apt-get remove docker-compose-plugin

Nếu bạn cài thủ công, chỉ cần xóa tệp nhị phân:

rm $DOCKER_CONFIG/cli-plugins/docker-compose

Nếu bạn vẫn còn tệp nhị phân v1 độc lập trên hệ thống, hãy tìm và gỡ nó bằng lệnh này:

sudo rm /usr/local/bin/docker-compose

Sau khi gỡ, hãy kiểm tra lại bằng cách chạy docker compose version. Nếu lệnh trả về lỗi, việc gỡ đã thành công.

Các vấn đề cài đặt thường gặp

Cài và gỡ Docker Compose khá dễ, nhưng vẫn có vài vấn đề có thể phát sinh. Đây là cách khắc phục những sự cố bạn có thể gặp.

"docker compose: command not found"

Điều này có nghĩa Compose chưa được cài, hoặc Docker không tìm thấy nó. Trước tiên, xác nhận Docker đang chạy:

docker --version

Nếu Docker ổn nhưng Compose thiếu, chỉ cần cài lại plugin:

sudo apt-get install docker-compose-plugin

Lỗi từ chối quyền truy cập

Nếu bạn thấy lỗi từ chối quyền khi chạy docker compose, có thể người dùng của bạn chưa có quyền truy cập socket Docker. Hãy thêm bạn vào nhóm docker:

sudo usermod -aG docker $USER

Đăng xuất và đăng nhập lại để thay đổi có hiệu lực. Trên Docker Desktop (macOS/Windows), đảm bảo ứng dụng thực sự đang chạy trước khi thử lệnh.

Lệch phiên bản

Nếu Compose hoạt động bất thường, hãy kiểm tra bạn đang chạy phiên bản nào:

docker compose version

Nếu bạn dùng phiên bản cũ, hãy làm theo các bước nâng cấp đã nói ở phần trước. Nếu bạn có cả v1 và v2, đó có thể là nguồn gốc gây nhầm lẫn.

Xung đột giữa v1 và v2

Việc có cả docker-compose (v1) và docker compose (v2) trên cùng một máy có thể gây xung đột. Kiểm tra v1 còn tồn tại không bằng lệnh:

which docker-compose

Nếu trả về một đường dẫn, hãy gỡ nó:

sudo rm $(which docker-compose)

Hãy dùng docker compose (không có dấu gạch nối) về sau.

Vấn đề PATH

Nếu Docker đã cài nhưng không tìm thấy lệnh, thư mục plugin CLI có thể chưa nằm trong PATH. Kiểm tra vị trí tệp nhị phân Compose:

ls $DOCKER_CONFIG/cli-plugins/

Nếu có ở đó nhưng vẫn không hoạt động, hãy thêm thư mục vào PATH trong ~/.bashrc hoặc ~/.zshrc:

export PATH=$PATH:$HOME/.docker/cli-plugins

Sau đó tải lại shell bằng cách chạy:

source ~/.bashrc

Docker Compose v1 vs. v2

Nếu bạn dùng Docker đã lâu, có lẽ bạn từng thấy cả docker-compose và docker compose trong các bài và video trên mạng. Chúng không giống nhau.

Docker Compose v1 là tệp nhị phân Python độc lập cài riêng với Docker. Nó dùng lệnh docker-compose (có dấu gạch nối). Docker đã khai tử vào năm 2023, và không còn bảo trì hay cập nhật.

Docker Compose v2 là plugin CLI viết bằng Go, tích hợp trực tiếp vào Docker CLI. Bạn gọi bằng docker compose (không có dấu gạch nối). Nó đi kèm Docker Engine và Docker Desktop, nên trên các thiết lập hiện đại không cần cài thêm gì.

Cú pháp lệnh gần như giống hệt giữa hai phiên bản — hầu hết lệnh docker-compose đều hoạt động tương tự với docker compose. Khác biệt chính nằm ở bên trong: v2 nhanh hơn, tích hợp tốt hơn với bộ công cụ của Docker, và được bảo trì tích cực.

Dưới đây là so sánh:

Compose v1 and v2 comparison table

Bảng so sánh Compose v1 và v2

Năm 2026, hãy dùng v2. Nếu script hoặc pipeline CI của bạn vẫn dùng docker-compose, chỉ cần thay dấu gạch nối bằng khoảng trắng — đó là thay đổi duy nhất bạn cần cho hầu hết luồng công việc.

Kết luận

Nếu bạn dùng bản cài Docker hiện đại, bạn đã có Compose v2. Không cần bước bổ sung. Trên macOS và Windows, ứng dụng Docker Desktop đi kèm Compose. Nếu bạn dùng Linux, nó được xử lý bởi gói docker-compose-plugin.

Trước khi bắt đầu viết hoặc chạy các tệp Compose, hãy chạy docker compose version để xác nhận mọi thứ đã sẵn sàng.

Nếu bạn vẫn dùng Compose v1, giờ là lúc chuyển đổi. Bỏ dấu gạch nối và gỡ tệp nhị phân cũ — đó là tất cả. Mọi tệp Compose hiện có của bạn sẽ hoạt động nguyên vẹn với v2.

Tìm thêm tài nguyên về Docker? Hãy đăng ký khóa học Giới thiệu về Docker để học về container, image và nhiều hơn nữa.

Dario Radečić

Tác giả

Dario Radečić

Chuyên gia Khoa học Dữ liệu Cấp cao, làm việc tại Croatia. Tác giả Công nghệ Hàng đầu với hơn 700 bài viết đã xuất bản, đạt trên 10 triệu lượt xem. Tác giả cuốn sách Tự động hóa Machine Learning với TPOT.

FAQs

Docker Compose dùng để làm gì?

Docker Compose cho phép bạn định nghĩa và chạy các ứng dụng đa container từ một tệp YAML duy nhất. Thay vì khởi động từng container thủ công bằng các lệnh docker run riêng lẻ, bạn mô tả toàn bộ thiết lập trong một tệp docker-compose.yml và đưa tất cả lên bằng docker compose up.

Tôi có cần cài Docker trước Docker Compose không?

Có. Docker Compose là một plugin chạy trên Docker Engine — nó sẽ không hoạt động nếu thiếu Docker. Hãy chạy docker --version để xác nhận Docker đã được cài trước khi thực hiện bất kỳ bước cài Compose nào.

Docker Compose có miễn phí không?

Bản thân Docker Compose là mã nguồn mở và miễn phí. Docker Desktop, gói kèm Compose trên macOS và Windows, cũng miễn phí cho mục đích cá nhân và nhóm nhỏ. Các tổ chức lớn hơn có thể cần thuê bao Docker trả phí tùy trường hợp sử dụng.

Khác biệt giữa docker compose và docker-compose là gì?

docker compose (không có dấu gạch nối) là plugin CLI v2 đi kèm các bản cài Docker hiện đại. docker-compose (có dấu gạch nối) là tệp nhị phân độc lập v1 đã bị Docker khai tử vào năm 2023. Cú pháp gần như giống nhau, nhưng v1 không còn được bảo trì — bạn nên dùng v2.

Vì sao `docker compose version` trả về "command not found" dù đã cài?

Thường là do plugin Compose chưa được cài đúng cách, hoặc thư mục plugin CLI chưa nằm trong PATH. Trên Linux, xác nhận plugin đã cài với sudo apt-get install docker-compose-plugin. Nếu đã cài mà vẫn không tìm thấy, hãy kiểm tra $DOCKER_CONFIG/cli-plugins đã nằm trong PATH và tải lại cấu hình shell.

Chủ đề

Liên quan