docker
和docker-compose
似乎与同一个dockerFile进行交互,两个工具之间有什么区别?
答案 0 :(得分:217)
管理docker引擎上的各个容器时使用docker
cli。它是访问docker守护程序api的客户端命令行。
docker-compose
cli可用于管理多容器应用程序。它还会将您在docker run
cli上输入的许多选项移动到docker-compose.yml
文件中,以便于重用。它作为前端"脚本"在docker
使用的同一个docker api之上,因此您可以执行docker-compose
对docker
命令和大量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
命令来管理堆栈。映射是两种用途之间的一对一:
有关群组模式的详细信息,请参阅docker's swarm mode documentation。
答案 1 :(得分:42)
docker
管理单个容器
docker-compose
管理多个容器应用
使用 docker-compose 需要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: {}
答案 2 :(得分:0)
Dockerfile 是一个文本文档,其中包含用户可以在命令行上调用以组合图像的所有命令/指令。
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。借助 Compose,您可以使用 YAML 文件来配置应用程序的服务。然后,使用单个命令,从配置中创建并启动所有服务。默认情况下,docker-compose 期望 Compose 文件的名称为 docker-compose.yml
或 docker-compose.yaml
。如果撰写文件具有不同的名称,我们可以使用 -f 标志指定它。