docker和docker-compose有什么区别

时间:2016-06-22 11:21:20

标签: docker docker-compose

dockerdocker-compose似乎与同一个dockerFile进行交互,两个工具之间有什么区别?

3 个答案:

答案 0 :(得分:217)

管理docker引擎上的各个容器时使用docker cli。它是访问docker守护程序api的客户端命令行。

docker-compose cli可用于管理多容器应用程序。它还会将您在docker run cli上输入的许多选项移动到docker-compose.yml文件中,以便于重用。它作为前端"脚本"在docker使用的同一个docker api之上,因此您可以执行docker-composedocker命令和大量shell脚本执行操作。有关详细信息,请参阅this documentation on docker-compose

Swarm模式更新

自从这个答案发布以来,docker已经添加了第二次使用docker-compose.yml文件。从version 3 yml format和docker 1.13开始,您可以将yml与docker-compose一起使用,也可以在docker的swarm模式中定义堆栈。要执行后者,您需要使用docker stack deploy -c docker-compose.yml $stack_name而不是docker-compose up,然后使用docker命令而不是docker-compose命令来管理堆栈。映射是两种用途之间的一对一:

  • 撰写项目 - > Swarm Stack:用于特定目的的一组服务
  • 撰写服务 - > Swarm服务:一个图像及其配置,可能会按比例放大。
  • 撰写容器 - > Swarm Task:服务中的单个容器

有关群组模式的详细信息,请参阅docker's swarm mode documentation

答案 1 :(得分:42)

docker 管理单个容器

docker-compose 管理多个容器应用

使用 docker-compose 需要3个步骤:

  1. 使用 Dockerfile
  2. 定义应用环境
  3. docker-compose.yml
  4. 中定义应用服务
  5. 运行 docker-compose up 以启动并运行应用
  6. 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: {}
    

答案 2 :(得分:0)

Dockerfile 是一个文本文档,其中包含用户可以在命令行上调用以组合图像的所有命令/指令。

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。借助 Compose,您可以使用 YAML 文件来配置应用程序的服务。然后,使用单个命令,从配置中创建并启动所有服务。默认情况下,docker-compose 期望 Compose 文件的名称为 docker-compose.ymldocker-compose.yaml。如果撰写文件具有不同的名称,我们可以使用 -f 标志指定它。

Check here for more details