如果告诉docker-composes以扩展服务,并且不揭露其端口,
docker-compose scale dataservice=2
网络中将有两个IPS DNS名称dataservice
可以解决。因此,主机名达到的服务将加载余额。
我也想对Edge代理进行此操作。关键是
docker-compose scale edgeproxy=2
会导致edgeproxy
解析到两个可能的IP地址之一。
但是,公开端口的语义是错误的。如果我暴露:
8443:8443
然后,它将尝试绑定每个edgeproxy
以绑定到主机8443。我想要的更像是:
0.0.0.0:8443:edgeproxy:8443
何时尝试通过主机8443进入Docker网络时,它随机选择一个边缘:8443 IP以将传入的TCP连接绑定到。
是否有替代端口?我想要一个可以让我参与的端口与将以edgeproxy
解决的IP交谈。
这是由Swarm模式提供的。您可以使用:
启用一个节点群集群docker swarm init
然后将您的撰写文件部署为:
的堆栈docker stack deploy -c docker-compose.yml $stack_name
与Docker组成的差异很大,包括:
- 群未建立图像
- 您使用
docker service
命令管理目标状态,试图用docker stop
停止容器无法正常工作,因为Swarm会重新启动 - 组成的文件需要在V3语法中
- 网络将是一个覆盖网络,默认情况下的容器无法连接到容器
主要更改之一是,暴露的端口已发布在由Swarm Mode管理的入口网络上,并且连接是与容器平衡的圆形robin负载。您还可以在撰写文件中定义一个副本计数,从而消除了运行刻度命令的需求。
请参阅更多信息:https://docs.docker.com/engine/swarm/