docker部署将不会在群集中发布端口

我有一个由两个节点,一个经理和一个工人组成的群组。 我想在群中发布一个端口,所以我可以访问我的应用程序,我不知道如何实现这一点。

version: '2' services: server: build: . image: my-hub.company.com/application/server:latest ports: - "80:80" 

当我运行docker-compose时,这暴露了端口80,它工作得很好,但是当我运行一个捆绑的部署

 docker deploy my-service 

这将不会发布端口,所以它只是说docker ps中的80 / tcp,而不是指向一个端口。 也许这是因为我需要连接一个负载平衡器或者运行一些奇怪的命令,或者添加另外一层configuration来实际暴露多主机群中的这个端口。

有人可以帮助我了解我需要configuration/做些什么来暴露一个端口。

我最好的情况是,端口80是暴露的,如果我从不同的主机名访问,它会发送给我不同的应用程序。

更新:如果我在部署应用程序后运行以下命令似乎工作

 docker service update -p 80:80 my-service_server docker kill <my-service_server id> 

我发现这个仓库运行一个高可用性代理,这似乎是伟大的,并由docker自己支持,但我似乎无法将这个单独应用到我的服务使用新的群模式。

https://github.com/docker/dockercloud-haproxy

在底部有一个很好的描述,描述了networking的外观:

 Internet -> HAProxy -> Service_A -> Container A 

但是我找不到通过docker service create命令链接服务的方法,现在看起来好像是一种设置networking的方式,而当我将这个networking应用于服务时,它将在HAProxy中进行检测。

– 马库斯

Swarm模式以不同的方式发布端口。 它不会在docker ps显示,因为它不会在主机上发布端口,而是将端口发布到所有节点,以便可以在服务副本之间进行负载平衡。

你应该看到docker service inspect my-service端口docker service inspect my-service

任何其他服务应该能够连接到my-service:80

据我了解,目前你可以发布端口更新服务后创build,如下所示:

 docker service update my-service --publish-add 80:80 

docker service ls将显示端口映射。