docker和 docker-compose似乎与同一个 dockerFile 进行交互,这两个工具之间有什么区别?
docker
docker-compose
docker命令行用于管理docker引擎上的单个容器。它是访问docker守护程序api的客户端命令行。
docker-compose命令行可用于管理多容器应用程序。它还将您在docker run cli中输入的许多选项移动到docker-compose.yml文件中,以便于重用。它作为一个前端“脚本”,位于docker使用的相同的docker api之上,所以你可以用docker命令和大量shell脚本完成docker-compose所做的一切。更多细节见本文档介绍docker-compose。
docker run
docker-compose.yml
蜂群模式更新
自从这个答案发布后,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命令来管理堆栈。这两个用途之间的映射是一对一的:
docker stack deploy -c docker-compose.yml $stack_name
docker-compose up
有关群集模式的更多详细信息,请参见Docker的群模式文档。
docker管理单个容器
docker-compose管理多个容器应用程序
docker-compose的使用需要3个步骤:
下面是一个来自码头工人文档的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.yml或docker-compose.yaml。如果合成文件有不同的名称,我们可以使用-f标志指定它。
docker-compose.yaml
查看更多详细信息
当我们只想处理一个容器时使用Docker或更具体地说,Docker引擎,而当我们有多个容器要处理时使用Docker -compose。当我们有多个服务需要处理时,我们就需要多个容器,就像我们有一个具有客户机-服务器模型的应用程序。我们需要一个用于服务器模型的容器和一个用于客户端模型的容器。Docker组合通常要求每个容器都有自己的dockerfile,然后是一个包含所有容器的yml文件。