docker和docker-compose有什么区别


237

docker并且docker-compose似乎正在与同一个dockerFile进行交互,这两个工具之间有什么区别?

Answers:


270

docker一个码头工人的发动机管理单个容器时,CLI使用。这是访问docker daemon api的客户端命令行。

docker-composeCLI可以用于管理多容器应用程序。它还会将您在docker runcli 上输入的许多选项移到docker-compose.yml文件中,以方便重用。它在与所使用的同一docker api上充当前端“脚本” docker,因此您可以docker-compose使用docker命令和许多shell脚本来完成所有工作。有关更多详细信息,请参阅docker-compose上的此文档


群更新

自发布此答案以来,docker已添加了docker-compose.yml文件的第二种用法。从版本3的yml格式和docker 1.13开始,您可以将yml与docker-compose一起使用,还可以在docker的swarm模式下定义堆栈。为此,您需要使用docker stack deploy -c docker-compose.yml $stack_name而不是,docker-compose up然后使用docker命令而不是命令来管理堆栈docker-compose。两种用途之间的映射是一对一的:

  • Compose Project-> Swarm Stack:针对特定目的的一组服务
  • Compose Service-> Swarm Service:一张图像及其配置,可能会放大。
  • 撰写容器->群集任务:服务中的单个容器

有关swarm模式的更多详细信息,请参阅docker的swarm模式文档


76

docker 管理单个容器

docker-compose 管理多个容器应用程序

的用法搬运工-撰写需要3个步骤:

  1. 使用Dockerfile定义应用程序环境
  2. docker-compose.yml中定义应用程序服务
  3. 运行docker-compose up以启动并运行应用

码头工人组成

以下是取自docker docs 的docker-compose.yml示例:

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

3
为了清楚起见,线 build: .web部分指向Dockerfile的位置在步骤1中创建
AndrewGentry
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.