Docker compose là gì? Các lệnh cơ bản và Cách cài đặt

Ngày đăng: 22/04/2025
Lượt xem: 47
Theo dõi:
Chia sẻ:
Đánh giá: 4.5/5 - (1 bình chọn)

Docker Compose là gì? Trong quá trình xây dựng một ứng dụng hiện đại, bạn thường phải vận hành nhiều container cùng lúc, mỗi container đảm nhận một nhiệm vụ riêng biệt như backend, frontend, database, … Việc khởi chạy và quản lý từng container một cách thủ công không chỉ mất thời gian mà còn dễ gây rối. Đây chính là lúc Docker Compose phát huy sức mạnh - một công cụ cực kỳ hữu ích giúp bạn tự động hóa, đơn giản hóa và tăng tốc toàn bộ quá trình triển khai nhiều container cùng lúc.

Docker compose là gì

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:

Các lệnh cơ bản trong Docker Compose

  • 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.

Cách cài đặt Docker Compose

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!

Bình luận
  • Báo xấu
    Phản hồi
    {comment_author}
    {comment_content}
Bài viết liên quan
 
VPS Windows là gì? Ưu - Nhược điểm và Khi nào nên sử dụng?
2025/07/08

VPS Windows là gì? Ưu - Nhược điểm và Khi nào nên sử dụng?

VPS Windows là gì? VPS Windows là dạng máy chủ ảo chạy trên hệ điều hành Windows. Nhờ công nghệ ảo hóa, VPS ...
Tác giả:
Đọc thêm
 
Hosting control panel là gì? Tại sao nó lại quan trọng?
2025/07/07

Hosting control panel là gì? Tại sao nó lại quan trọng?

Hosting control panel là gì? Hosting control panel (hay Bảng điều khiển Hosting) là bộ công cụ quan trọng giúp người quản trị dễ...
Tác giả:
Đọc thêm
 
PHP là gì? Ưu - Nhược điểm và Ứng dụng thực tế của PHP
2025/07/04

PHP là gì? Ưu - Nhược điểm và Ứng dụng thực tế của PHP

PHP là gì? PHP ban đầu là viết tắt của “Personal Home Page”, tuy nhiên ngày nay nó được hiểu là &ldquo...
Tác giả:
Đọc thêm
 
Latency là gì? Nguyên nhân và Cách khắc phục độ trễ
2025/05/09

Latency là gì? Nguyên nhân và Cách khắc phục độ trễ

Latency là gì? Latency hay còn gọi là độ trễ, là khoảng thời gian tính từ lúc người dùng thực hiện một h&a...
Tác giả:
Đọc thêm
 
9 Cách đặt tên Email chuyên nghiệp cho cá nhân, doanh nghiệp
2025/05/06

9 Cách đặt tên Email chuyên nghiệp cho cá nhân, doanh nghiệp

  Tại sao nên biết cách đặt tên email chuyên nghiệp? Đặt tên email chuyên nghiệp cực kỳ quan trọng vì nó ...
Tác giả:
Đọc thêm
 
Mysql workbench là gì? Cách Download và sử dụng [Hướng dẫn]
2025/04/26

Mysql workbench là gì? Cách Download và sử dụng [Hướng dẫn]

Mysql workbench là gì? MySQL Workbench là một công cụ được thiết kế trực quan, hỗ trợ truy cập và quản lý cơ sở dữ liệu. ...
Tác giả:
Đọc thêm