一尘不染

Docker-compose:在多个主机中部署服务

docker

我有一个docker-
compose文件,该文件在同一主机中部署8个不同的docker服务。是否可以在不同的主机中部署它?我想在一个主机中远程部署某些服务,而在其他主机中远程部署其他服务。我需要使用docker-
swarm吗?还是更简单的方法?

我已经阅读到可以使用DOCKER_HOST来完成此操作,但是如果我使用此变量配置/ etc / default /
docker,则所有服务都将在远程主机上运行,​​而我需要的是在一台远程主机中的某些服务,而其他其他远程主机中的服务。


阅读 1165

收藏
2020-06-17

共1个答案

一尘不染

在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来完成。本文档描述了您需要执行的操作。

2020-06-17