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
将显示端口映射。