我有一个docker- compose文件,该文件在同一主机中部署8个不同的docker服务。是否可以在不同的主机中部署它?我想在一个主机中远程部署某些服务,而在其他主机中远程部署其他服务。我需要使用docker- swarm吗?还是更简单的方法?
我已经阅读到可以使用DOCKER_HOST来完成此操作,但是如果我使用此变量配置/ etc / default / docker,则所有服务都将在远程主机上运行,而我需要的是在一台远程主机中的某些服务,而其他其他远程主机中的服务。
在docker swarm模式下,您可以使用以下命令部署版本3的yml文件:
docker stack deploy -c docker-compose.yml $your_stack_name
v3语法删除了一些不适用于群体模式的功能,例如链接和依赖项。您还应该注意,默认情况下,卷存储在节点本地。否则,v3语法与您可能已经在使用的v2语法非常相似。请参阅以下ether以获取更多详细信息:
https://docs.docker.com/compose/compose- file/
https://docs.docker.com/engine/swarm/
[docker-compose.yml v3之前的原始答案]
为了将单个docker- compose.yml部署到多个主机,您需要使用独立的群集(不是较新的群集模式,但是,这种模式正在迅速改变)。启动一个具有将每个主机定义为其群集成员的群集管理器,然后可以在docker- compose.yml中使用约束来定义哪些服务在哪些主机上运行。
您还可以将docker-compose.yml拆分为多个文件,每个主机一个,然后运行多个docker-compose up命令,并为每个命令定义不同的DOCKER_HOST值。
在这两种情况下,您都需要配置docker安装程序以侦听网络,这应该通过在这些套接字上配置TLS来完成。本文档描述了您需要执行的操作。