如果您告诉docker-compose扩展服务,并且不公开其端口,则
docker-compose scale dataservice=2
网络中将有两个DNS名称dataservice
解析为IP。因此,按主机名访问的服务将实现负载平衡。
我也想对边缘代理执行此操作。重点是
docker-compose scale edgeproxy=2
会导致edgeproxy
解析为2个可能的IP地址之一。
但是,公开端口的语义对此是错误的。如果我公开:
8443:8443
然后它将尝试将每个edgeproxy
绑定到主机8443。我想要的更像是:
0.0.0.0:8443:edgeproxy:8443
当您尝试通过主机8443进入docker网络时,它会随机选择一个edgeproxy:8443 IP来绑定传入的TCP连接。
是否存在仅进行端口转发的替代方法?我想要一个端口,可以让我与将解析为edgeproxy
的任何IP通信。
答案 0 :(得分:0)
这是由群体模式提供的。您可以使用以下方法启用单节点群集集群:
docker stack deploy -c docker-compose.yml $stack_name
然后使用以下内容将您的撰写文件部署为堆栈:
docker service
与docker compose有很多区别,包括:
docker stop
命令管理目标状态,尝试使用{{1}}停止容器将无法正常工作,因为swarm将重新启动它主要变化之一是,公开端口在由群集模式管理的入口网络上发布,并且连接是轮流负载平衡到您的容器。您还可以在撰写文件内定义副本计数,而无需运行scale命令。