允许docker swarm服务绑定主机ip接口

时间:2019-02-23 12:58:18

标签: docker ubuntu networking devops docker-swarm

我创建了一个go脚本,该脚本在链接到我的eno1接口的IP之间进行切换。

如果我的程序执行curl --interface "51.15.xx.xx" ...并在我的3个IP之间切换

在我的界面下面:

2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether ac:1f:6b:27:xx:xx brd ff:ff:ff:ff:ff:ff
inet 51.15.xx.xx/24 brd 51.15.21.255 scope global eno1
   valid_lft forever preferred_lft forever
inet 212.83.xx.x1/24 brd 212.83.154.255 scope global eno1
   valid_lft forever preferred_lft forever
inet 212.83.xx.x2/24 brd 212.83.154.255 scope global secondary eno1
   valid_lft forever preferred_lft forever

当他直接在主机上运行时,我的程序可以完美运行,他也可以 docker run --network=host

但是在具有docker swarm(在1个节点上部署)的生产环境中,我无法绑定主机网络,并且我的程序无法运行。我收到错误消息:bind failed with errno 99: Address not available

我只想将host网络与群集服务上的本地范围绑定或允许我的群集服务绑定主机ip

PS:我已经尝试绑定网络主机,但是当我执行docker stack deploy时,泊坞窗选择一个具有范围群的host网络。

最诚挚的问候

2 个答案:

答案 0 :(得分:0)

在声明集群服务或堆栈时是否发布了端口?

根据文档:

  

如果您的容器或服务未发布任何端口,则主机联网无效。

请参见https://docs.docker.com/network/host/

答案 1 :(得分:0)

尝试使用直接命令来创建服务,例如:

代码

docker service create --network host ddmitrii/echo

Docker映像未公开任何端口

检查

curl localhost:8000

输出

Pong

因此端口连接到主机,并且可以从任何接口访问。