暴露的 Docker 端口正在监听但在 Ubuntu 14.04 上已关闭

暴露的 Docker 端口正在监听但在 Ubuntu 14.04 上已关闭

我刚刚安装了 Ubuntu 14,04,并且安装了 Docker。我已经做了一些事情来解决这个问题,所以首先让我向你展示一些配置。

首先,我禁用了 IPv6。我还对 Docker Opts 命令进行了一些更改

DOCKER_OPTS="
-H tcp://intnode1:2376
-H unix:///var/run/docker.sock
--storage-driver aufs
--tlsverify
--tlscacert /etc/certs/ca.pem
--tlscert /etc/certs/cert.pem
--tlskey /etc/certs/key.pem
--dns 8.8.8.8
--dns 8.8.4.4
--ip=192.168.120.11
--bip=10.202.202.1/24
"

正如你所见,我已经为docker指定了一个监听的IP。

现在,我正在尝试在端口 3376 上运行 Swarm 管理器。这是我用来启动 Swarm 管理器的命令。

sudo docker run -d -p 3376:3376 -v /etc/certs:/certs:ro --name=SwarmManager --restart=always swarm:1.1.0 manage --replication --advertise 192.168.120.11:3376 --tlsverify --tlscacert=/certs/ca.pem --tlscert=/certs/cert.pem --tlskey=/certs/key.pem --discovery-opt kv.cacertfile=/certs/ca.pem --discovery-opt kv.certfile=/certs/cert.pem --discovery-opt kv.keyfile=/certs/key.pem --host=0.0.0.0:3376 nodes://192.168.120.[11:20]:2376

我没有指定 -p 参数的主机部分(尽管我曾尝试使用它),并且 --host flat 设置为监听所有 IP

这是 netstat 的输出

administrator@IntNode1:~$ netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 *:4524                  *:*                     LISTEN
tcp        0      0 192.168.120.11:3376     *:*                     LISTEN
tcp        0      0 *:ssh                   *:*                     LISTEN
tcp        0      0 192.168.120.11:2376     *:*                     LISTEN
tcp        0      0 *:4523                  *:*                     LISTEN
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     313807   /var/run/docker.sock
unix  2      [ ACC ]     STREAM     LISTENING     313813   /var/run/docker/libcontainerd/docker-containerd.sock
unix  2      [ ACC ]     STREAM     LISTENING     10415    /var/run/acpid.socket
unix  2      [ ACC ]     STREAM     LISTENING     8473     @/com/ubuntu/upstart
unix  2      [ ACC ]     STREAM     LISTENING     9757     /var/run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     312956   /var/lib/docker/network/files/fa183e7b40f875024aba092e3c47cfa9c8d58fb6f58399aca747b1b84750d74b.sock
unix  2      [ ACC ]     SEQPACKET  LISTENING     9680     /run/udev/control

因此,端口 3376 正在监听正确的 IP,但现在如果我运行 nmap 来检查端口是否打开,我会看到以下信息

administrator@IntNode1:~$ nmap -p 3376 192.168.120.11

Starting Nmap 6.40 ( http://nmap.org ) at 2016-08-23 13:12 BST
Nmap scan report for 192.168.120.11
Host is up (0.000086s latency).
PORT     STATE  SERVICE
3376/tcp closed cdbroker

Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds

我不知道发生了什么。ufw 状态为不活动。Docker 版本为 1.11.2,构建版本为 b9f10c9。

我不太了解 IP 表,但如果有帮助的话,这里是输出

administrator@IntNode1:~$ sudo iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
DOCKER-ISOLATION  all  --  anywhere             anywhere
DOCKER     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain DOCKER (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             10.202.202.3         tcp dpt:3376

Chain DOCKER-ISOLATION (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere

我现在真的被这个问题难住了。我错过了什么?

答案1

所以结果是容器中的服务出现故障,这就是为什么我无法连接到端口,尽管主机说它正在监听。

相关内容