docker和docker-compose似乎都在使用同一个dockerFile,这两个工具之间有什么区别?
docker cli用于管理docker引擎上的单个容器。它是访问docker守护程序api的客户端命令行。
docker-compose cli可用于管理多容器应用程序。它还将您在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个步骤:
使用Dockerfile定义应用程序环境 在docker-compose.yml中定义应用程序服务 运行docker-compose up来启动和运行app
下面是一个码头组成。来自docker文档的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 or more specifically docker engine is used when we want to handle only one container whereas the docker-compose is used when we have multiple containers to handle. We would need multiple containers when we have more than one service to be taken care of, like we have an application that has a client server model. We need a container for the server model and one more container for the client model. Docker compose usually requires each container to have its own dockerfile and then a yml file that incorporates all the containers.
推荐文章
- E: gnupg, gnupg2和gnupg1似乎没有安装,但是这个操作需要其中一个
- 如何从docker更改默认docker注册表。IO到我的私人注册表?
- Docker- compose无法连接到Docker Daemon
- 单个命令停止和删除docker容器
- 使用GPU从docker容器?
- 如何使用本地映像作为dockerfile的基本映像?
- 谁能解释一下docker.sock
- 多重from是什么意思
- 通过映像名称停止Docker容器- Ubuntu
- 如果dockerfile的名称不是dockerfile,我如何构建一个dockerfile ?
- 守护进程的错误响应:已被集装箱使用"
- 如何从DockerFile运行docker实例?
- 我是否试图连接到启用TLS的没有TLS的守护进程?
- Docker -一种访问主机USB或串行设备的方法?
- Docker:无效引用格式