码头和码头的区别是什么

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

126977 次浏览

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

docker-compose命令行可用于管理多容器应用程序。它还将您在docker run cli中输入的许多选项移动到docker-compose.yml文件中,以便于重用。它作为一个前端“脚本”,位于docker使用的相同的docker api之上,所以你可以用docker命令和大量shell脚本完成docker-compose所做的一切。更多细节见本文档介绍docker-compose


蜂群模式更新

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

  • Compose Project -> Swarm Stack:用于特定目的的一组服务
  • 群服务:一个镜像和它的配置,可能会放大。
  • Compose Container -> Swarm Task:服务中的单个容器

有关群集模式的更多详细信息,请参见Docker的群模式文档

docker管理单个容器

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

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

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

docker-compose up

下面是一个来自码头工人文档docker-compose.yml示例:

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

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

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

查看更多详细信息

当我们只想处理一个容器时使用Docker或更具体地说,Docker引擎,而当我们有多个容器要处理时使用Docker -compose。当我们有多个服务需要处理时,我们就需要多个容器,就像我们有一个具有客户机-服务器模型的应用程序。我们需要一个用于服务器模型的容器和一个用于客户端模型的容器。Docker组合通常要求每个容器都有自己的dockerfile,然后是一个包含所有容器的yml文件。