Vu Tech Smart Technology Creating Smart Cities

Hướng dẫn sử dụng Docker Compose toàn diện

Docker Compose là một công cụ mạnh mẽ giúp định nghĩa và quản lý các ứng dụng Docker đa container. Bài viết này sẽ giúp bạn nắm vững các lệnh cơ bản và kỹ thuật hữu ích khi làm việc với Docker Compose.

Các lệnh cơ bản

  1. docker-compose up

Chức năng: Tạo và khởi động tất cả các container được định nghĩa trong file docker-compose.yml

Cú pháp: docker-compose up [options] [SERVICE…]

Các tùy chọn phổ biến:

  • -d: Chạy ở chế độ detached (nền)
  • –build: Xây dựng lại images trước khi khởi động
  • –force-recreate: Tạo lại container ngay cả khi cấu hình không thay đổi
  • –no-deps: Không khởi động các services phụ thuộc

Ví dụ:

docker-compose up -d

docker-compose up -d –build app

  1. docker-compose down

Chức năng: Dừng và xóa các container, networks và volumes (tùy chọn)

Cú pháp: docker-compose down [options]

Các tùy chọn phổ biến:

  • –volumes hoặc -v: Xóa cả volumes
  • –remove-orphans: Xóa container không được định nghĩa
  • –rmi [all|local]: Xóa images

Ví dụ:

docker-compose down

docker-compose down -v

  1. docker-compose ps

Chức năng: Liệt kê các container thuộc project

Cú pháp: docker-compose ps [options] [SERVICE…]

Các tùy chọn phổ biến:

  • -q: Chỉ hiển thị ID
  • –services: Chỉ hiển thị tên services

Ví dụ:

docker-compose ps

docker-compose ps -q

  1. docker-compose logs

Chức năng: Xem logs từ các services

Cú pháp: docker-compose logs [options] [SERVICE…]

Các tùy chọn phổ biến:

  • -f: Follow log output
  • –tail=N: Hiển thị N dòng cuối
  • –timestamps: Hiển thị timestamps

Ví dụ:

docker-compose logs -f

docker-compose logs –tail=100 app

Các lệnh quản lý Container

  1. docker-compose exec

Chức năng: Thực thi lệnh trong container đang chạy (tương tự SSH)

Cú pháp: docker-compose exec [options] SERVICE COMMAND

Các tùy chọn phổ biến:

  • -T: Không cấp phát pseudo-TTY
  • –index=N: Chỉ định container thứ N
  • -u USER: Chạy lệnh với user cụ thể

Ví dụ:

docker-compose exec app bash

docker-compose exec -u root db mysql -u root -p

  1. docker-compose run

Chức năng: Chạy một lệnh một lần trên service, tạo container mới

Cú pháp: docker-compose run [options] SERVICE [COMMAND]

Các tùy chọn phổ biến:

  • –rm: Tự động xóa container sau khi hoàn thành
  • -d: Chạy ở chế độ detached
  • –no-deps: Không khởi động services phụ thuộc
  • -e KEY=VAL: Thiết lập biến môi trường

Ví dụ:

docker-compose run –rm app npm test

docker-compose run -e NODE_ENV=test app node script.js

  1. docker-compose restart

Chức năng: Khởi động lại các services

Cú pháp: docker-compose restart [options] [SERVICE…]

Các tùy chọn phổ biến:

  • -t, –timeout TIMEOUT: Thời gian chờ trước khi buộc dừng (mặc định: 10 giây)

Ví dụ:

docker-compose restart

docker-compose restart -t 30 app

  1. docker-compose stop

Chức năng: Dừng các services đang chạy

Cú pháp: docker-compose stop [options] [SERVICE…]

Các tùy chọn phổ biến:

  • -t, –timeout TIMEOUT: Thời gian chờ trước khi buộc dừng (mặc định: 10 giây)

Ví dụ:

docker-compose stop

docker-compose stop app db

  1. docker-compose start

Chức năng: Khởi động các services đã được tạo trước đó

Cú pháp: docker-compose start [SERVICE…]

Ví dụ:

docker-compose start

docker-compose start app db

  1. docker-compose pause/unpause

Chức năng: Tạm dừng hoặc tiếp tục các services

Cú pháp:

  • docker-compose pause [SERVICE…]
  • docker-compose unpause [SERVICE…]

Ví dụ:

docker-compose pause app

docker-compose unpause app

  1. docker-compose top

Chức năng: Hiển thị các processes đang chạy trong mỗi container

Cú pháp: docker-compose top [SERVICE…]

Ví dụ:

docker-compose top

docker-compose top app

Kỹ thuật tương tác với Container (Tương tự SSH)

Docker Compose cung cấp nhiều cách để tương tác với container, tương tự như việc sử dụng SSH:

  1. Tạo shell tương tác

docker-compose exec web /bin/bash

docker-compose exec app /bin/sh

  1. Sao chép file giữa máy host và container

docker cp $(docker-compose ps -q app):/app/data.json ./local/path/

  1. Thực thi lệnh với quyền root

docker-compose exec -u root app bash

  1. Thực thi lệnh shell phức tạp

docker-compose exec app sh -c “cd /app && bash”

  1. Kiểm tra biến môi trường trong container

docker-compose exec app env

  1. Chạy lệnh với user cụ thể

docker-compose exec -u postgres db psql -U postgres

  1. Chạy lệnh trong thư mục cụ thể

docker-compose exec app sh -c “cd /var/log && ls -la”

  1. Chuyển file từ máy host vào container

docker cp ./config.json $(docker-compose ps -q app):/app/config.json

Tips và best practices

  1. Sử dụng các file .env: Lưu trữ các biến môi trường trong file .env để tăng tính bảo mật và linh hoạt
  2. Đặt tên cho project: Sử dụng -p để đặt tên cho project tránh xung đột
  3. Sử dụng version control: Luôn lưu file docker-compose.yml trong hệ thống version control
  4. Tách môi trường phát triển và sản xuất: Sử dụng các file docker-compose riêng biệt cho các môi trường khác nhau

Kết luận

Docker Compose là công cụ không thể thiếu cho việc quản lý các ứng dụng Docker đa container. Với các lệnh và kỹ thuật được trình bày ở trên, bạn có thể dễ dàng triển khai, quản lý và gỡ lỗi các ứng dụng phức tạp trong môi trường containerized.

 

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

logo

With nearly two decades of experience in technology development and leadership, I serve as the Business Director of CTech High Technology JSC

Press ESC to close