Docker Compose là gì? Cấu trúc file và các lệnh cơ bản
15/09/2026Khi một ứng dụng không còn chỉ chạy trên một container duy nhất mà cần nhiều thành phần phối hợp, ví dụ như một backend, một cơ sở dữ liệu, và một cache server thì việc khởi động thủ công từng container bằng lệnh docker run nhanh chóng trở nên rối rắm và dễ sai sót. Docker Compose ra đời để giải quyết đúng vấn đề này.
Bài viết dưới đây, Viettel IDC giải thích Docker Compose là gì, cấu trúc file cấu hình và những điều cần biết trước khi sử dụng.

Docker Compose là gì?
Docker Compose là một công cụ trong hệ sinh thái Docker, cho phép định nghĩa và quản lý các ứng dụng có kiến trúc nhiều container (multi-container) thông qua một file cấu hình duy nhất viết theo định dạng YAML. Thay vì phải gõ nhiều lệnh docker run với hàng loạt tham số cho từng container riêng lẻ, bạn chỉ cần khai báo toàn bộ cấu hình (container nào, dùng image gì, kết nối với nhau ra sao) vào một file gọi là docker-compose.yml, sau đó chạy một lệnh duy nhất để khởi động toàn bộ hệ thống cùng lúc.
Cấu trúc file docker-compose.yml
Một file docker-compose.yml tiêu chuẩn thường được tổ chức quanh bốn khối logic chính:
version
Dòng đầu tiên khai báo phiên bản cú pháp Compose đang sử dụng, giúp Docker biết cách diễn giải các phần cấu hình phía sau cho đúng.
services
Đây là phần quan trọng nhất, nơi định nghĩa từng container thành phần cấu thành ứng dụng, ví dụ một service cho ứng dụng backend, một service khác cho cơ sở dữ liệu. Mỗi service có thể khai báo image sử dụng, cổng (port) cần mở, biến môi trường, và các service khác mà nó phụ thuộc vào.
networks
Khối này cấu hình mạng nội bộ riêng để các container có thể giao tiếp với nhau bằng tên service thay vì địa chỉ IP cố định, giúp việc kết nối giữa các thành phần trở nên đơn giản và ổn định hơn.
volumes
Khối này chỉ định vùng lưu trữ dữ liệu bền vững (persistent storage), đảm bảo dữ liệu quan trọng (ví dụ dữ liệu database) không bị mất khi container bị xóa hoặc khởi động lại.
Dưới đây là một ví dụ minh họa đơn giản, định nghĩa một ứng dụng web kết nối với cơ sở dữ liệu:
yaml
version: "3.9"
services:
web:
image: node:18
ports:
- "3000:3000"
depends_on:
- db
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: example
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
Trong ví dụ trên, service web sẽ tự động chờ service db khởi động trước (nhờ khai báo depends_on), còn dữ liệu của PostgreSQL được lưu bền vững trong volume db_data, không bị mất kể cả khi container db bị xóa và tạo lại.
Các lệnh Docker Compose cơ bản
Sau khi có file docker-compose.yml, bạn có thể quản lý toàn bộ ứng dụng bằng một số lệnh cơ bản sau (chạy trong thư mục chứa file cấu hình):
Nếu có thay đổi trong file docker-compose.yml (ví dụ đổi image, thêm biến môi trường), chỉ cần chỉnh sửa file rồi chạy lại docker compose up, Docker sẽ tự động áp dụng thay đổi tương ứng.
Docker Compose V1 và V2 khác nhau thế nào?
Một điểm dễ gây nhầm lẫn khi tra cứu tài liệu cũ là sự khác biệt giữa hai cách gọi lệnh:
- Docker Compose V1: Sử dụng lệnh có dấu gạch nối docker-compose (ví dụ docker-compose up), được cài đặt như một chương trình/binary riêng biệt, tách khỏi Docker CLI chính.
- Docker Compose V2: Được viết lại và tích hợp trực tiếp vào Docker CLI dưới dạng một plugin, sử dụng lệnh không có dấu gạch nối docker compose (ví dụ docker compose up). Đây là hướng phát triển hiện tại của Docker.
Nếu bạn thấy tài liệu hướng dẫn dùng docker-compose (có gạch nối) trong khi máy của bạn chỉ nhận docker compose (có khoảng trắng), đây là dấu hiệu bạn đang dùng phiên bản Compose V2 tích hợp sẵn, và ngược lại. Về cơ bản, cú pháp file docker-compose.yml giữa hai phiên bản không khác biệt quá nhiều, chủ yếu khác nhau ở cách gọi lệnh.

Cài đặt Docker Compose
Việc có cần cài đặt riêng Docker Compose hay không phụ thuộc vào hệ điều hành đang sử dụng:
- Windows và macOS: Khi cài đặt ứng dụng Docker Desktop, Docker Compose (phiên bản plugin V2) đã được tích hợp sẵn, không cần cài đặt thêm bất kỳ thành phần nào khác.
- Linux thuần túy (không dùng Docker Desktop): Thường cần cài đặt thêm gói Docker Compose riêng, vì các bản phân phối Docker Engine cho Linux không phải lúc nào cũng đi kèm sẵn plugin này.
Docker Compose có phù hợp cho production không?
Docker Compose có thể được sử dụng ở nhiều môi trường khác nhau, bao gồm cả phát triển (development), kiểm thử (testing), tích hợp liên tục (CI) và production ở một mức độ nhất định.
Tuy nhiên, với các ứng dụng lớn, phức tạp đặc biệt là hệ thống cần chạy trên nhiều máy chủ vật lý, cần khả năng tự động mở rộng (auto-scaling) hoặc tự phục hồi khi container gặp sự cố (self-healing) thì Docker Compose không phải là giải pháp tối ưu, vì nó được thiết kế chủ yếu để quản lý container trên một máy chủ duy nhất. Trong những trường hợp này, các nền tảng điều phối container như Kubernetes hoặc Docker Swarm thường là lựa chọn phù hợp hơn, nhờ khả năng quản lý container trên nhiều máy chủ và tự động xử lý các tình huống lỗi ở quy mô lớn.
Nói cách khác, Docker Compose là công cụ lý tưởng để bắt đầu, phát triển và thử nghiệm ứng dụng multi-container một cách nhanh chóng, còn việc có nên dùng tiếp cho production hay chuyển sang một nền tảng orchestration khác sẽ phụ thuộc vào quy mô và độ phức tạp thực tế của hệ thống khi đưa vào vận hành chính thức.
Câu hỏi thường gặp (FAQs)
Docker Compose có thay thế được Dockerfile không? Không. Hai công cụ này phục vụ hai mục đích khác nhau và thường được dùng cùng nhau: Dockerfile định nghĩa cách xây dựng một image cụ thể từ mã nguồn, trong khi Docker Compose định nghĩa cách chạy và kết nối nhiều container (có thể được build từ Dockerfile hoặc dùng image có sẵn) với nhau thành một ứng dụng hoàn chỉnh.
Có thể chạy nhiều file docker-compose.yml khác nhau cho từng môi trường (dev/staging/production) không? Có. Đây là cách làm phổ biến thường tạo một file cấu hình cơ bản dùng chung, sau đó dùng thêm các file override riêng cho từng môi trường (ví dụ docker-compose.dev.yml, docker-compose.prod.yml) và chỉ định file cần dùng bằng tham số -f khi chạy lệnh, ví dụ docker compose -f docker-compose.prod.yml up.
Docker Compose có cần kết nối Internet để chạy không? Chỉ cần kết nối Internet ở lần đầu tiên để tải các image chưa có sẵn trên máy. Sau khi image đã được tải về, các lần khởi động tiếp theo có thể chạy được mà không cần kết nối Internet, miễn là không có thay đổi nào yêu cầu tải thêm image mới.
Kết luận
Docker Compose giải quyết một vấn đề rất thực tế trong phát triển ứng dụng hiện đại: quản lý nhiều container phối hợp với nhau mà không phải xử lý thủ công từng lệnh riêng lẻ. Chỉ với một file YAML khai báo rõ ràng và một vài lệnh cơ bản, toàn bộ hệ thống ứng dụng có thể được khởi động, dừng và cấu hình lại một cách nhất quán trên bất kỳ máy nào cài Docker.
Với các dự án cá nhân, môi trường phát triển hoặc ứng dụng quy mô vừa và nhỏ, Docker Compose gần như là công cụ không thể thiếu. Còn khi hệ thống mở rộng đến quy mô lớn hơn, đây là thời điểm phù hợp để cân nhắc các giải pháp orchestration mạnh hơn như Kubernetes.
Để tìm hiểu thêm về dịch vụ, vui lòng liên hệ đến Viettel IDC:
- Hotline: 1800.8088 (miễn phí cước gọi)
- Fanpage: https://www.facebook.com/viettelidc
- Website: https://viettelidc.com.vn/
Viettel IDC - Nhà cung cấp dẫn đầu về giải pháp Trung tâm dữ liệu và Điện toán đám mây tại Việt Nam
Tin liên quan
Dịch vụ quản trị máy chủ có hỗ trợ những công cụ bảo mật và sao lưu nào phổ biến?
Dịch vụ quản trị máy chủ hỗ trợ những công cụ bảo mật và sao lưu nào? Khám phá các giải pháp phổ biến giúp bảo vệ dữ liệu và khôi phục hệ thống.
File Server là gì? Giải pháp lưu trữ và chia sẻ dữ liệu tập trung
File Server là gì? Tìm hiểu cách hoạt động, ưu nhược điểm và cách triển khai hệ thống lưu trữ, chia sẻ dữ liệu tập trung cho doanh nghiệp.
Blog công nghệ nào tốt ở Việt Nam? 8 website đáng theo dõi
Blog công nghệ nào tốt ở Việt Nam? Khám phá 8 website nổi bật giúp bạn cập nhật tin tức, tìm hiểu thiết bị và học kiến thức công nghệ.
Viettel IDC dẫn đầu bảng xếp hạng Enterprise of Choice 2026 tại nhiều hạng mục quan trọng
Viettel IDC đạt 6 thứ hạng nổi bật tại Enterprise of Choice 2026, trong đó có 5 vị trí Top 1 ở các hạng mục về công nghệ thông tin, phát triển bền vững, doanh nghiệp được yêu thích bởi người lao động, lãnh đạo và thế hệ trẻ. Kết quả ghi nhận những nỗ lực của doanh nghiệp trong xây dựng môi trường làm việc tích cực, lấy con người làm trung tâm.
So sánh các dịch vụ cloud backup phổ biến tại Việt Nam
So sánh các dịch vụ cloud backup phổ biến tại Việt Nam về phạm vi sao lưu, bảo mật, khôi phục, chi phí và mô hình triển khai để doanh nghiệp dễ lựa chọn.
Dịch vụ lưu trữ đám mây nào tốt nhất cho doanh nghiệp nhỏ 2026? 9 lựa chọn nên tham khảo
So sánh 9 dịch vụ lưu trữ đám mây cho doanh nghiệp nhỏ năm 2026: công cụ chia sẻ file, Object Storage trong nước và quốc tế, kèm tiêu chí chọn nhà cung cấp.
Mua chứng chỉ SSL cho website ở đâu uy tín? 5 kênh mua và triển khai
Có 5 kênh mua và triển khai chứng chỉ SSL cho website: CA, đại lý trong nước, nhà cung cấp hosting, nhà đăng ký tên miền và CA miễn phí. Xem ưu nhược điểm và cách kiểm tra nơi bán uy tín.
Lưu trữ ngoài có an toàn không? Rủi ro và cách bảo vệ dữ liệu doanh nghiệp
Lưu trữ dữ liệu bên ngoài có an toàn không? Phân tích rủi ro, các lớp bảo vệ cần có và tiêu chí chọn nhà cung cấp cho doanh nghiệp.
VDS là gì? VDS khác VPS và Dedicated Server như thế nào?
VDS là gì, khác VPS và Dedicated Server ở điểm nào, ưu nhược điểm và trường hợp nên sử dụng.
Cách triển khai observability cho ứng dụng đám mây và microservices như thế nào
Hướng dẫn triển khai observability cho ứng dụng đám mây và microservices qua 7 bước, từ xác định SLI/SLO đến tối ưu chi phí telemetry.
Bình luận ()