2

我在这里按照这些说明构建了一个 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 没有打开,我也可以访问网络服务器?

4

1 回答 1

2

Docker 自己设置 iptables 规则,干扰 UFW。
尝试使用附加的命令行选项运行 docker 守护进程--iptables=false

于 2017-05-15T02:25:49.650 回答