docker 和 docker-compose 有什么区别

新手上路,请多包涵

dockerdocker-compose 好像是在和同一个dockerFile交互,这两个工具有什么区别?

原文由 Hafiz 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
2 个回答

docker cli 用于管理 docker 引擎上的单个容器。它是访问 docker daemon api 的客户端命令行。

docker-compose cli 可用于管理多容器应用程序。它还将您在 docker run cli 中输入的许多选项移动到 docker-compose.yml 文件中,以便于重用。它在 docker 使用的同一 docker api 之上作为前端“脚本”,所以你可以做任何事情 docker-compose 使用 docker 很多shell脚本。有关更多详细信息,请参阅 docker-compose 上的此文档


群模式更新

自发布此答案以来,docker 添加了对 docker-compose.yml 文件的第二次使用。从 版本 3 yml 格式 和 docker 1.13 开始,您可以将 yml 与 docker-compose 一起使用,也可以在 docker 的 swarm 模式下定义堆栈。 To do the latter you need to use docker stack deploy -c docker-compose.yml $stack_name instead of docker-compose up and then manage the stack with docker commands instead of docker-compose commands.映射在两种用途之间是一对一的:

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

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

原文由 BMitch 发布,翻译遵循 CC BY-SA 3.0 许可协议

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: {}

原文由 JSON C11 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题