docker和docker-compose有什么区别

Haf*_*fiz 211 docker docker-compose

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

BMi*_*tch 252

docker一个码头工人的发动机管理单个容器时,CLI使用.它是访问docker守护程序api的客户端命令行.

docker-composeCLI可以用于管理多容器应用程序.它还将您在docker runcli 上输入的许多选项移动到docker-compose.yml文件中以便于重用.它作为前端"脚本"在所使用的相同docker api之上工作docker,因此您可以docker-compose使用docker命令和大量shell脚本完成所有操作.有关详细信息,请参阅docker-compose上的此文档.


Swarm模式的更新

自从这个答案发布以来,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管理堆栈.映射是两种用途之间的一对一:dockerdocker-compose

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

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


JSO*_*C11 62

docker 管理单个容器

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

使用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: {}
Run Code Online (Sandbox Code Playgroud)

  • 为了清楚起见,“web”部分中的“build:.”行指向步骤 1 中创建的 Dockerfile 的位置。 (7认同)
  • 那么上面的yml会创建多少个容器呢?他们有共同的东西吗,比如 FS? (2认同)

小智 6

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

\n

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

\n

检查这里了解更多详情

\n