Docker compose là gì?
Docker Compose là một công cụ giúp bạn định nghĩa và quản lý các ứng dụng multi-container thông qua một file cấu hình YAML. Nó có thể xử lý đồng thời nhiều container trong các môi trường như sản xuất, phát triển, kiểm thử, staging, workflows của CI.
Bạn có thể hiểu đơn giản là thay vì phải chạy từng container riêng lẻ bằng các lệnh Docker phức tạp, bạn có thể sử dụng một file cấu hình duy nhất (thường là docker-compose.yml) để mô tả tất cả các services (container), mạng, và volumes cần thiết cho ứng dụng của bạn. Sau đó, chỉ với một lệnh duy nhất (docker-compose up), Docker Compose sẽ tạo và khởi chạy tất cả các thành phần này.
Ví dụ: Thay vì chạy từng container riêng lẻ, bạn có thể định nghĩa một ứng dụng web với backend, frontend, và database trong một file docker-compose.yml, rồi triển khai tất cả cùng lúc. Điều này giúp đơn giản hóa việc phát triển, kiểm thử, và triển khai ứng dụng đa container.
Ví dụ về file docker-compose.yml:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: mysecretpassword
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
Trong ví dụ này chúng ta định nghĩa hai services: web và db.
- Service web sử dụng image nginx:latest, map port 80 của host vào port 80 của container, và mount thư mục ./html trên host vào /usr/share/nginx/html trong container.
- Service db sử dụng image mysql:5.7, thiết lập biến môi trường MYSQL_ROOT_PASSWORD, và sử dụng một named volume db_data để lưu trữ dữ liệu MySQL.
- Chúng ta cũng định nghĩa một volume tên là db_data.
Để chạy ứng dụng này, bạn chỉ cần di chuyển đến thư mục chứa file docker-compose.yml và chạy lệnh docker-compose up -d (-d để chạy ở chế độ detached)
>>> Xem thêm: Docker Là Gì? Kiến Thức Cơ Bản Về Docker Không Thể Bỏ Lỡ
Các lệnh cơ bản trong Docker Compose
Dưới đây là các lệnh docker-compose cơ bản thường được sử dụng:
- docker-compose up: Khởi động các container.
- docker-compose down: Dừng và xóa các container.
- docker-compose ps: Kiểm tra trạng thái hiện tại của các container.
- docker-compose build: Tạo image từ Dockerfile cho từng dịch vụ.
- docker-compose restart: Khởi động lại các container.
- docker-compose stop: Dừng các container đang chạy.
- docker-compose rm: Xóa các container không còn sử dụng.
- docker-compose logs: Xem log đầu ra của các container.
- docker-compose config: Hiển thị nội dung cấu hình từ tệp docker-compose.yml.
- docker-compose exec: Thực thi một lệnh bên trong container.
- docker-compose port: Hiển thị các cổng được ánh xạ từ container ra bên ngoài.
- docker-compose top: Liệt kê các tiến trình đang chạy trong container.
Lưu ý: Tất cả các lệnh trên cần được thực hiện trong thư mục chứa tệp docker-compose.yml.
Tính năng của Docker Compose
Bên cạnh hiểu Docker Compose là gì, bạn cần nắm rõ các tính năng nổi bật mà nó mang lại:
- Định nghĩa và quản lý đa container: Docker Compose cho phép bạn định nghĩa toàn bộ ứng dụng của mình trong một file duy nhất (docker-compose.yml). File này mô tả các service (container), network, volume và các cấu hình liên quan. Nhờ đó, bạn có thể dễ dàng khởi chạy, dừng và quản lý tất cả các thành phần của ứng dụng một cách đồng bộ chỉ với một vài câu lệnh.
- Cấu hình dễ dàng: Bạn có thể cấu hình chi tiết từng container trong file docker-compose.yml, bao gồm image sử dụng, port mapping, volume, biến môi trường, dependencies giữa các container và nhiều tùy chọn khác. Điều này giúp bạn tái hiện môi trường phát triển, kiểm thử và production một cách nhất quán.
- Khả năng mở rộng: Docker Compose cho phép bạn dễ dàng scale (mở rộng) số lượng container cho một service cụ thể chỉ bằng một câu lệnh. Điều này rất hữu ích khi ứng dụng của bạn cần xử lý lượng truy cập tăng đột biến.
- Chia sẻ cấu hình: File docker-compose.yml có thể được chia sẻ dễ dàng giữa các thành viên trong nhóm phát triển, đảm bảo mọi người đều làm việc trên cùng một môi trường đã được định nghĩa.
- Tái sử dụng cấu hình: Bạn có thể tái sử dụng các cấu hình đã được định nghĩa trong file docker-compose.yml cho các môi trường khác nhau (ví dụ: development, staging, production) với một vài điều chỉnh nhỏ.
- Quản lý network và volume: Docker Compose tự động tạo và quản lý các network và volume cần thiết cho các service trong ứng dụng của bạn, giúp các container có thể giao tiếp với nhau và chia sẻ dữ liệu một cách dễ dàng.
- Tính nhất quán: Sử dụng Docker Compose giúp đảm bảo tính nhất quán giữa các môi trường khác nhau, giảm thiểu các vấn đề phát sinh do sự khác biệt về cấu hình.
Cách cài đặt Docker Compose
Docker Compose là công cụ không thể thiếu khi làm việc với nhiều container Docker. Tuy nhiên, cách cài đặt sẽ khác nhau tùy theo hệ điều hành bạn đang sử dụng. Dưới đây là hướng dẫn chi tiết giúp bạn cài đặt nhanh chóng và đúng cách.
Hệ điều hành MacOS
Trên máy Mac, việc sử dụng Docker Compose cực kỳ đơn giản. Bạn chỉ cần cài Docker Desktop cho macOS, Docker Compose đã được tích hợp sẵn, không cần cài đặt riêng.
Hệ điều hành Windows
Tương tự như trên macOS, nếu bạn đang dùng Windows, chỉ cần tải và cài Docker Desktop cho Windows. Docker Compose sẽ tự động được cài kèm, bạn không cần thực hiện bước bổ sung nào.
Hệ điều hành Linux
Với Linux, quá trình cài đặt có phần thủ công hơn, nhưng vẫn rất đơn giản nếu làm theo các bước sau:
Cấp quyền thực thi cho tệp Docker Compose:
bash
sudo chmod +x /path/to/docker-compose
Thay /path/to/docker-compose bằng đường dẫn thực tế đến file Docker Compose bạn đã tải về.
Di chuyển tệp vào thư mục hệ thống (nằm trong biến $PATH) để có thể sử dụng ở bất kỳ đâu:
Bạn có thể thực hiện thao tác chuyển tệp Docker Compose đến thư mục /usr/local/bin bằng câu lệnh sau trên Linux:
bash
sudo mv /path/to/docker-compose /usr/local/bin/docker-compose
Kiểm tra xem Docker Compose đã cài đặt thành công chưa bằng cách nhập câu lệnh sau:
bash
docker-compose --version
Nếu thấy hiện lên phiên bản, tức là Docker Compose đã được cài thành công.
Các bước sử dụng Docker Compose
Docker Compose giúp bạn dễ dàng thiết lập và quản lý nhiều container trong một dự án. Dưới đây tôi sẽ hướng dẫn chi tiết các bước để bạn bắt đầu cài đặt Docker Compose:
Bước 1: Cài đặt Docker Compose
Trước tiên, bạn cần cài Docker Compose. Thông thường, Docker Compose được cài đặt cùng với Docker Desktop trên Windows và macOS. Trên Linux, bạn có thể cần cài đặt nó riêng biệt bằng pip hoặc trình quản lý gói của hệ thống.
Sau khi cài xong, tiếp tục tạo một Dockerfile để xác định environment (mỗi service sẽ chạy trên một container riêng, sử dụng image tương ứng).
Bước 2: Tạo tệp docker-compose.yml
Đây là file trung tâm, nơi bạn định nghĩa các services (container), volumes, networks, … mà ứng dụng multi-container cần.
Cấu trúc cơ bản: File docker-compose.yml thường có cấu trúc như sau:
version: '3.x'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
db:
image: postgres:13
environment:
POSTGRES_USER: myuser
POSTGRES_PASSWORD: mypassword
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
Trong đó:
- version: Chỉ định phiên bản cú pháp của file Docker Compose. Nên sử dụng phiên bản mới nhất được hỗ trợ để tận dụng các tính năng mới.
- services: Một phần quan trọng chứa định nghĩa của từng container (service) trong ứng dụng của bạn.
- volumes: Định nghĩa các named volumes có thể được sử dụng bởi các services. Named volumes giúp quản lý và chia sẻ dữ liệu dễ dàng hơn.
- networks: Định nghĩa các mạng tùy chỉnh mà các services có thể tham gia để giao tiếp với nhau.
Bước 3: Chạy lệnh docker-compose up
Sau khi tạo xong file cấu hình, chạy lệnh sau để Docker Compose bắt đầu dựng môi trường:
Di chuyển vào thư mục chứa file docker-compose.yml.
Chạy lệnh:
bash
docker-compose up
Lúc này, Docker sẽ tự động tải các image nếu chúng chưa có sẵn, tạo mạng và volume, sau đó khởi chạy các container theo đúng cấu hình.
⚙️ Quản lý container với Docker Compose
Dưới đây là một số lệnh hữu ích bạn sẽ dùng thường xuyên:
Lệnh |
Chức năng |
docker-compose stop |
Dừng tất cả container |
docker-compose start |
Khởi động lại các container đã dừng |
docker-compose restart |
Khởi động lại tất cả container |
docker-compose down |
Dừng và xóa các container đã tạo |
docker-compose ps |
Kiểm tra trạng thái container hiện tại |
🔧 Tùy chỉnh và cập nhật
Nếu bạn muốn thay đổi bất kỳ cấu hình nào, chỉ cần chỉnh sửa lại file docker-compose.yml, sau đó chạy lại lệnh docker-compose up. Docker sẽ tự động áp dụng thay đổi.
Tuy nhiên, bạn cần đảm bảo bạn đang ở trong đúng thư mục chứa file docker-compose.yml khi chạy các lệnh nhé!
Hy vọng qua bài viết này của HostingViet, bạn đã hiểu rõ Docker Compose là gì? Và cách cài đặt công cụ này một cách nhanh chóng, dễ dàng trên từng hệ điều hành. Chúc bạn triển khai dự án mượt mà và không lỗi phát sinh!