swarm docker連接埠不通的解決方法:1、編輯設定文件,新增配置「net.ipv4.ip_forward=1」;2、透過「systemctl restart network」重新啟動網路。
本文操作環境:centOS6.8系統、Docker 18.09.x版、Dell G3電腦。
如何解決swarm docker 連接埠不通問題? docker swarm網路問題
docker主機內部網路正常,與其它主機的連接失效,其它主機無法連接docker主機上映射的端口,docker內部也無法連接外部主機。
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
執行sysctl -p
生效
重新啟動網路
systemctl restart network
再次查看docker info,警告消失,主機上的docker網路恢復正常。
我所使用的伺服器是阿里雲伺服器
如果你的叢集使用的預設連接埠4789,那麼你可能會遇到跟我一樣的問題。
阿里雲的幫助文件中有這樣一句話:
在添加UDP監聽前,注意如下限制:
UDP監聽的250、4789和4790三個端口為系統保留端口,暫時不對外開放。
詳情
在19.03及之後的版本,docker在swarm init之上增加了–data-path-port uint32 的配置項目用於更改docker swarm的VXLAN連接埠。
修改連接埠之後成功解決問題
sudo docker swarm init --data-path-port 5789
查看docker日誌(journalctl -u docker -n 20 -f )發現:
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"
出現這個原因是因為宿主機沒有載入ip_vs模組。在各個節點載入ip_vs模組後重啟docker即可。 【推薦學習:《docker影片教學》】
modprobe ip_vs service docker restart
以上是如何解決swarm docker 連接埠不通問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!