繁体   English   中英

docker deploy不会在swarm中发布端口

[英]docker deploy won't publish port in swarm

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

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,而不是指向端口。 也许这是因为我需要附加负载均衡器或运行一些花哨的命令,或者可能添加另一层配置以实际在多主机群中公开此端口。

有人可以帮助我理解我需要配置/做什么来使这个暴露一个端口。

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

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

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

我发现这个存储库用于运行HA代理,它看起来很棒并且由docker自己支持,但是我似乎无法使用新的swarm模式将这个单独应用于我的服务。

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

底部有一个很好的描述,描述了网络的外观:

Internet -> HAProxy -> Service_A -> Container A

但是我找不到通过docker service create命令链接服务的方法,最好现在看起来像是一种建立网络的方式,当我在服务上应用这个网络时,它会在HAProxy中找到它。

- 马库斯

据我所知,您可以在以后创建更新服务的端口,如下所示:

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

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

您应该看到来自docker service inspect my-service的端口docker service inspect my-service

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

docker service ls将显示端口映射。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM