什么是docker和docker-compose之间的区别?
什么是docker和docker-compose之间的区别?
docker
和docker-compose
似乎都与同一个docker文件进行交互,这两个工具之间有什么区别?
admin 更改状态以发布 2023年5月22日
docker
管理单个容器
docker-compose
管理多个容器的应用程序
使用docker-compose需要三个步骤:
- 使用Dockerfile定义应用环境
- 在docker-compose.yml文件中定义应用服务
- 运行
docker-compose up
启动和运行应用程序
以下是从docker文档中获取的docker-compose.yml示例:
services: web: build: . ports: - "5000:5000" volumes: - .:/code - logvolume01:/var/log links: - redis redis: image: redis volumes: logvolume01: {}
docker
cli用于在docker引擎上管理单个容器。它是访问docker守护程序api的客户端命令行。
docker-compose
cli可用于管理多容器应用程序。它还将您在docker run
cli中输入的许多选项移动到docker-compose.yml
文件中,以便更轻松地重用。它作为同一docker api的前端“脚本”使用,这个api也被docker
使用,因此您可以使用docker
命令和大量的shell脚本来执行docker-compose
所能做的任何事情。有关更多详细信息,请参见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
,然后使用docker
命令而不是docker-compose
命令来管理该堆栈。两个用途之间的映射是一一对应的:
- Compose项目-> Swarm堆栈:特定用途的服务组
- Compose服务-> Swarm服务:一个镜像及其配置,可能会扩展
- Compose容器-> Swarm任务:服务中的单个容器
有关Swarm模式的更多详细信息,请参见docker Swarm模式文档。