Ngày đăng: July 17, 2025
Docker giúp đơn giản hóa quản lý các tiến trình ứng dụng trong container. Container tương tự như máy ảo nhưng nhẹ hơn và sử dụng tài nguyên hiệu quả hơn, cho phép phát triển các dịch vụ riêng biệt trong cùng một môi trường ứng dụng.
Với những ứng dụng phụ thuộc vào nhiều dịch vụ, việc phối hợp đồng thời nhiều container để khởi động, giao tiếp, và tắt cùng lúc có thể trở nên phức tạp. Docker Compose là công cụ cho phép chạy môi trường đa container dựa trên định nghĩa trong tệp YAML. Nó dùng các định nghĩa dịch vụ để tạo môi trường tùy chỉnh với nhiều container có thể chia sẻ mạng và volume dữ liệu.
Hướng dẫn này sẽ trình bày cách cài Docker Compose trên máy chủ Ubuntu 20.04 và cách bắt đầu sử dụng công cụ này.
Để đảm bảo bạn tải phiên bản ổn định mới nhất của Docker Compose, bạn sẽ tải phần mềm này từ kho Github chính thức.
Trước tiên, hãy xác nhận phiên bản mới nhất trên trang phát hành. Tại thời điểm viết bài, phiên bản hiện tại là 1.29.2.
Chạy lệnh dưới đây để tải phiên bản 1.29.2 và lưu file thực thi tại /usr/local/bin/docker-compose để truy cập toàn hệ thống:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Sau đó, đặt quyền thực thi cho file:
sudo chmod +x /usr/local/bin/docker-compose
Kiểm tra cài đặt thành công bằng lệnh:
docker-compose --version
Bạn sẽ thấy output tương tự:
docker-compose version 1.29.2, build 5becea4c
Để minh họa, bạn sẽ tạo môi trường máy chủ web dùng image chính thức Nginx từ Docker Hub, container này phục vụ một trang HTML tĩnh.
Tạo thư mục mới trong thư mục home và chuyển vào thư mục đó:
mkdir ~/compose-demo
cd ~/compose-demo
Tạo thư mục ứng dụng làm gốc tài liệu của Nginx:
mkdir app
Dùng trình soạn thảo ưa thích tạo file index.html
trong thư mục app:
nano app/index.html
Thêm nội dung sau vào file:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Docker Compose Demo</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/kognise/water.css@latest/dist/dark.min.css">
</head>
<body>
<h1>This is a Docker Compose Demo Page.</h1>
<p>This content is being served by an Nginx container.</p>
</body>
</html>
Lưu và đóng file (CTRL+X
, rồi nhấn Y
và ENTER
nếu dùng nano).
Tạo file docker-compose.yml
:
nano docker-compose.yml
Thêm nội dung sau:
version: '3.7'
services:
web:
image: nginx:alpine
ports:
- "8000:80"
volumes:
- ./app:/usr/share/nginx/html
File này bắt đầu với định nghĩa version
để Docker Compose biết cấu hình bạn dùng là phiên bản nào.
Kế đến là khối services
, bạn tạo dịch vụ web
sử dụng image nginx:alpine
, ánh xạ cổng 8000
máy chủ tới cổng 80
container, nơi Nginx chạy.
volumes
tạo volume chia sẻ giữa máy chủ và container, thư mục app
trên máy chủ được chia sẻ tại /usr/share/nginx/html
trong container để ghi đè thư mục gốc tài liệu của Nginx.
Lưu và đóng file.
Với file docker-compose.yml
sẵn sàng, bạn có thể dừng môi trường bằng lệnh:
docker-compose up -d
Lệnh này sẽ tải các image cần thiết, tạo container cho dịch vụ web
và chạy ở chế độ background.
Docker Compose sẽ kiểm tra image trong máy, nếu không có thì tải từ Docker Hub.
Để xem container có đang chạy không:
docker-compose ps
Lệnh này hiển thị trạng thái container và ánh xạ cổng.
Trỏ trình duyệt tới localhost:8000
(nếu chạy trên máy local) hoặc your_server_domain_or_IP:8000
(nếu trên server từ xa) để xem trang demo.
Thư mục app bạn chia sẻ giữ đồng bộ nội dung với container, nên khi chỉnh sửa index.html
, container sẽ tự cập nhật và hiển thị trên trình duyệt khi bạn tải lại trang.
docker-compose logs
docker-compose pause
docker-compose unpause
docker-compose stop
docker-compose down
nginx:alpine
):docker image rm nginx:alpine
docker-compose: command not found
: Lệnh không có trong PATH, có thể do cài chưa xong hoặc cấu hình sai. Bạn có thể chạy đầy đủ đường dẫn như:/usr/local/bin/docker-compose
sudo docker-compose
hoặc thêm người dùng vào nhóm docker:sudo usermod -aG docker $USER
Sau đó đăng xuất và đăng nhập lại để quyền có hiệu lực.
Bạn đã biết cách cài Docker Compose và tạo môi trường container dựa trên image máy chủ web Nginx cũng như quản lý môi trường này bằng lệnh Compose.
Xem tài liệu chính thức để biết đầy đủ các lệnh docker-compose
.
Nếu quý khách hàng gặp khó khăn hay có bất kì thắc mắc nào. Hãy liên hệ theo thông tin bên dưới.