docker 和 docker-compose 有什么区别
What is the difference between docker and docker-compose
docker
和docker-compose
好像是在同一个dockerFile交互,这两个工具有什么区别?
在 docker 引擎上管理单个容器时使用 docker
cli。是访问docker守护进程api.
的客户端命令行
docker-compose
cli 可用于管理多容器应用程序。它还将您在 docker run
cli 上输入的许多选项移动到 docker-compose.yml
文件中,以便于重复使用。它作为前端 "script" 在 docker
使用的相同 docker api 之上工作,所以你可以用 docker
做 docker-compose
做的所有事情] 命令和大量 shell 脚本。有关详细信息,请参阅 this documentation on docker-compose。
集群模式更新
自发布此答案后,docker 已添加对 docker-compose.yml 文件的第二次使用。从 version 3 yml format 和 docker 1.13 开始,您可以将 yml 与 docker-compose 一起使用,还可以在 docker 的群模式中定义堆栈。要执行后者,您需要使用 docker stack deploy -c docker-compose.yml $stack_name
而不是 docker-compose up
,然后使用 docker
命令而不是 docker-compose
命令来管理堆栈。两种用途之间的映射是一对一的:
- Compose Project -> Swarm Stack:一组用于特定目的的服务
- Compose 服务 -> Swarm 服务:一张图像及其配置,可能按比例放大。
- Compose Container -> Swarm Task:服务中的单个容器
有关集群模式的更多详细信息,请参阅docker's swarm mode documentation。
docker
管理单个容器
docker-compose
管理多个容器应用
使用 docker-compose 需要 3 个步骤:
- 使用 Dockerfile
定义应用程序环境
- 在docker-compose.yml
中定义应用服务
- 运行
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: {}
Docker文件是一个文本文档,其中包含用户可以在命令行上调用以assemble图像的所有commands/Instruction。
Docker Compose 是用于定义和 运行 多容器 Docker 应用程序的工具。使用 Compose,您可以使用 YAML 文件来配置应用程序的服务。然后,使用一个命令,您可以从您的配置中创建并启动所有服务。默认情况下,docker-compose 期望 Compose 文件的名称为 docker-compose.yml
或 docker-compose.yaml
。如果撰写文件有不同的名称,我们可以使用 -f 标志指定它。
docker 或更具体地说 docker 引擎在我们只想处理一个容器时使用,而 docker-compose 在我们有多个容器要处理时使用。当我们需要处理多个服务时,我们将需要多个容器,就像我们有一个具有客户端服务器模型的应用程序一样。我们需要一个用于服务器模型的容器和一个用于客户端模型的容器。 Docker compose 通常要求每个容器都有自己的 docker 文件,然后是包含所有容器的 yml 文件。
docker
和docker-compose
好像是在同一个dockerFile交互,这两个工具有什么区别?
在 docker 引擎上管理单个容器时使用 docker
cli。是访问docker守护进程api.
docker-compose
cli 可用于管理多容器应用程序。它还将您在 docker run
cli 上输入的许多选项移动到 docker-compose.yml
文件中,以便于重复使用。它作为前端 "script" 在 docker
使用的相同 docker api 之上工作,所以你可以用 docker
做 docker-compose
做的所有事情] 命令和大量 shell 脚本。有关详细信息,请参阅 this documentation on docker-compose。
集群模式更新
自发布此答案后,docker 已添加对 docker-compose.yml 文件的第二次使用。从 version 3 yml format 和 docker 1.13 开始,您可以将 yml 与 docker-compose 一起使用,还可以在 docker 的群模式中定义堆栈。要执行后者,您需要使用 docker stack deploy -c docker-compose.yml $stack_name
而不是 docker-compose up
,然后使用 docker
命令而不是 docker-compose
命令来管理堆栈。两种用途之间的映射是一对一的:
- Compose Project -> Swarm Stack:一组用于特定目的的服务
- Compose 服务 -> Swarm 服务:一张图像及其配置,可能按比例放大。
- Compose Container -> Swarm Task:服务中的单个容器
有关集群模式的更多详细信息,请参阅docker's swarm mode documentation。
docker
管理单个容器
docker-compose
管理多个容器应用
使用 docker-compose 需要 3 个步骤:
- 使用 Dockerfile 定义应用程序环境
- 在docker-compose.yml 中定义应用服务
- 运行
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: {}
Docker文件是一个文本文档,其中包含用户可以在命令行上调用以assemble图像的所有commands/Instruction。
Docker Compose 是用于定义和 运行 多容器 Docker 应用程序的工具。使用 Compose,您可以使用 YAML 文件来配置应用程序的服务。然后,使用一个命令,您可以从您的配置中创建并启动所有服务。默认情况下,docker-compose 期望 Compose 文件的名称为 docker-compose.yml
或 docker-compose.yaml
。如果撰写文件有不同的名称,我们可以使用 -f 标志指定它。
docker 或更具体地说 docker 引擎在我们只想处理一个容器时使用,而 docker-compose 在我们有多个容器要处理时使用。当我们需要处理多个服务时,我们将需要多个容器,就像我们有一个具有客户端服务器模型的应用程序一样。我们需要一个用于服务器模型的容器和一个用于客户端模型的容器。 Docker compose 通常要求每个容器都有自己的 docker 文件,然后是包含所有容器的 yml 文件。