Sự khác biệt giữa docker và docker-compose là gì


237

dockerdocker-composedường như đang tương tác với cùng một dockerFile, sự khác biệt giữa hai công cụ là gì?

Câu trả lời:


270

Các dockercli được sử dụng khi quản lý container cá nhân trên một công cụ Docker. Đây là dòng lệnh của máy khách để truy cập vào docker daemon api.

Các docker-composecli có thể được sử dụng để quản lý một ứng dụng đa container. Nó cũng di chuyển nhiều tùy chọn bạn sẽ nhập trên docker runcli vào docker-compose.ymltệp để sử dụng lại dễ dàng hơn. Nó hoạt động như một "kịch bản" mặt trước trên cùng một api docker được sử dụng bởi docker, vì vậy bạn có thể làm mọi thứ docker-composevới dockercác lệnh và rất nhiều kịch bản shell. Xem tài liệu này trên docker-compose để biết thêm chi tiết.


Cập nhật cho Chế độ Swarm

Vì câu trả lời này đã được đăng, docker đã thêm lần sử dụng thứ hai của các tập tin docker-compose.yml. Bắt đầu với định dạng yml phiên bản 3 và docker 1.13, bạn có thể sử dụng yml với docker-compose và cũng để xác định một ngăn xếp trong chế độ swarm của docker. Để thực hiện thứ hai, bạn cần sử dụng docker stack deploy -c docker-compose.yml $stack_namethay vì docker-compose upvà sau đó quản lý ngăn xếp bằng dockercác lệnh thay vì các docker-composelệnh. Ánh xạ là một cho một trong hai cách sử dụng:

  • Dự án soạn thảo -> Swarm Stack: Một nhóm các dịch vụ cho một mục đích cụ thể
  • Dịch vụ soạn thảo -> Dịch vụ Swarm: Một hình ảnh và đó là cấu hình, có thể được thu nhỏ lại.
  • Soạn container -> Nhiệm vụ Swarm: Một container duy nhất trong dịch vụ

Để biết thêm chi tiết về chế độ swarm, xem tài liệu chế độ swarm của docker .


76

docker quản lý các container đơn

docker-compose quản lý nhiều ứng dụng container

Cách sử dụng docker-compose yêu cầu 3 bước:

  1. Xác định môi trường ứng dụng với Dockerfile
  2. Xác định các dịch vụ ứng dụng trong docker-compose.yml
  3. Chạy docker-compose upđể bắt đầu và chạy ứng dụng

docker-soạn lên

Dưới đây là một ví dụ docker-compose.yml được lấy từ các tài liệu docker :

services:
  web:
    build: .
    ports:
    - "5000:5000"
    volumes:
    - .:/code
    - logvolume01:/var/log
    links:
    - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

3
Để rõ ràng, dòng build: .trong webphần chỉ đến vị trí của Dockerfile được tạo ở bước 1.
AndrewGentry
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.