Docker 尽管端口未打开,但可以访问 Swarm 容器?
Docker Swarm container reachable although port is not open?
我按照这些说明 here 构建了一个 3 节点 Docker Swarm 集群。
一开始我用 ufw
打开了多个端口以便 docker 节点之间进行通信:
# ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
2376/tcp ALLOW IN Anywhere
2377/tcp ALLOW IN Anywhere
7946/tcp ALLOW IN Anywhere
7946/udp ALLOW IN Anywhere
4789/udp ALLOW IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6)
2376/tcp (v6) ALLOW IN Anywhere (v6)
2377/tcp (v6) ALLOW IN Anywhere (v6)
7946/tcp (v6) ALLOW IN Anywhere (v6)
7946/udp (v6) ALLOW IN Anywhere (v6)
4789/udp (v6) ALLOW IN Anywhere (v6)
如您所见,端口 80 未 打开。
因此,在本教程的最后我将官方 nginx docker 映像部署到集群中:
docker service create -p 80:80 --name webserver nginx
我能够输入我的服务器的 IP 地址,并显示了 nginx hello world 页面。
现在我想知道,为什么80端口没有打开,我仍然可以访问网络服务器?
Docker 自己设置 iptables 规则,干扰 UFW。
使用额外的命令行选项 运行 docker 守护进程 --iptables=false
.
我按照这些说明 here 构建了一个 3 节点 Docker Swarm 集群。
一开始我用 ufw
打开了多个端口以便 docker 节点之间进行通信:
# ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
2376/tcp ALLOW IN Anywhere
2377/tcp ALLOW IN Anywhere
7946/tcp ALLOW IN Anywhere
7946/udp ALLOW IN Anywhere
4789/udp ALLOW IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6)
2376/tcp (v6) ALLOW IN Anywhere (v6)
2377/tcp (v6) ALLOW IN Anywhere (v6)
7946/tcp (v6) ALLOW IN Anywhere (v6)
7946/udp (v6) ALLOW IN Anywhere (v6)
4789/udp (v6) ALLOW IN Anywhere (v6)
如您所见,端口 80 未 打开。
因此,在本教程的最后我将官方 nginx docker 映像部署到集群中:
docker service create -p 80:80 --name webserver nginx
我能够输入我的服务器的 IP 地址,并显示了 nginx hello world 页面。
现在我想知道,为什么80端口没有打开,我仍然可以访问网络服务器?
Docker 自己设置 iptables 规则,干扰 UFW。
使用额外的命令行选项 运行 docker 守护进程 --iptables=false
.