swarm docker端口不通的解決辦法:1、編輯配置文件,添加配置“net.ipv4.ip_forward=1”;2、通過“systemctl restart network”重啟網(wǎng)絡(luò)。
本文操作環(huán)境:centOS6.8系統(tǒng)、Docker 18.09.x版、Dell G3電腦。
如何解決swarm docker 端口不通問題?docker swarm網(wǎng)絡(luò)問題
問題:
docker主機(jī)內(nèi)部網(wǎng)絡(luò)正常,與其它主機(jī)的連接失效,其它主機(jī)不能連接docker主機(jī)上映射的端口,docker內(nèi)部也無法連接外部主機(jī)。
服務(wù)器環(huán)境如下:
- 所在系統(tǒng)centos
- docker info
WARNING: IPv4 forwarding is disabled WARNING: bridge-nf-call-iptables is disabled WARNING: bridge-nf-call-ip6tables is disabled
解決方法
-
編輯配置文件
vim /etc/sysctl.conf
添加配置
net.bridge.bridge-nf-call-ip6tables=1 net.bridge.bridge-nf-call-iptables=1 net.bridge.bridge-nf-call-arptables=1 net.ipv4.ip_forward=1
執(zhí)行 sysctl -p 生效
-
重啟網(wǎng)絡(luò)
systemctl restart network
再次查看docker info,警告消失,主機(jī)上的docker網(wǎng)絡(luò)恢復(fù)正常。
重點(diǎn),針對(duì)云服務(wù)器
我所使用的服務(wù)器是阿里云服務(wù)器
如果你的集群使用的默認(rèn)端口4789,那么你可能遇到跟我一樣的問題。
阿里云的幫助文檔中有這樣一句話:
在添加UDP監(jiān)聽前,注意如下限制:
UDP監(jiān)聽的250、4789和4790三個(gè)端口為系統(tǒng)保留端口,暫時(shí)不對(duì)外開放。
詳情
在19.03及之后的版本,docker在swarm init之上增加了–data-path-port uint32 的配置項(xiàng)用于更改docker swarm的VXLAN端口。
修改端口之后成功解決問題
sudo docker swarm init --data-path-port 5789
其他問題
查看docker日志(journalctl -u docker -n 20 -f )發(fā)現(xiàn) :
level=error msg="error reading the kernel parameter net.ipv4.vs.expire_nodest_conn" error="open /proc/sys/net/ipv4/vs/expire_nodest_conn: no such file or directory"
出現(xiàn)這個(gè)原因是因?yàn)樗拗鳈C(jī)沒有加載ip_vs模塊。在各個(gè)節(jié)點(diǎn)加載ip_vs模塊后重啟docker即可。【推薦學(xué)習(xí):《docker視頻教程》】
modprobe ip_vs service docker restart