我们创建了一个码头工人的容器是这样的:
docker container create \
--name orderer \
--network dscsa_net \
--workdir $WORK_DIR \
--expose=7050 \
hyperledger/fabric-orderer:1.3.0 ./start-orderer.sh
但无法连接到端口7050的容器上。
root@dcee7e74266f:/home# nc -vz 10.0.0.194 7050
nc: connect to 10.0.0.194 port 7050 (tcp) failed: Connection refused
我们能够ping通容器:
root@dcee7e74266f:/home# ping 10.0.0.194
PING 10.0.0.194 (10.0.0.194) 56(84) bytes of data.
64 bytes from 10.0.0.194: icmp_seq=1 ttl=64 time=0.810 ms
64 bytes from 10.0.0.194: icmp_seq=2 ttl=64 time=1.30 ms
64 bytes from 10.0.0.194: icmp_seq=3 ttl=64 time=0.668 ms
64 bytes from 10.0.0.194: icmp_seq=4 ttl=64 time=1.10 ms
64 bytes from 10.0.0.194: icmp_seq=5 ttl=64 time=0.631 ms
^C
--- 10.0.0.194 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 0.631/0.902/1.301/0.261 ms
也看到进程侦听的容器上的端口7050:
root@9756199efefa:/home# netstat -tuplen
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 127.0.0.1:7050 0.0.0.0:* LISTEN 0 10097930 7/orderer
tcp 0 0 127.0.0.11:34865 0.0.0.0:* LISTEN 0 10097705 -
udp 0 0 127.0.0.11:51385 0.0.0.0:* 0 10097704 -
这里发生了什么? 我们如何解决这个问题?
编辑:我们是一个覆盖网络上。 在回答提出的发布标志是N / A,因为我们正在做的容器容器通信。 总之,我们尝试过了,这是行不通的。
有一件事我们已经注意到这是如果我们运行:
docker network inspect <our-network-name>
除其他事项外,它打印出一个containers
部分,但在这一节只在主机上从容器docker network inspect
执行中列出。 托管在其他节点容器未上市(也提到在这里 )。
我们证实,如果我们运行:
docker node ls
所有的节点是群的一部分。
好像其他人也遇到了这个问题,例如, 在这里 ,但如何解决?
注:我们能够连接到运行暴露在端口7054不同的服务这个容器创建另一个容器,甚至没有使用expose
标志。
root@dcee7e74266f:/home# nc -zv 10.0.0.164 7054
Connection to 10.0.0.164 7054 port [tcp/*] succeeded!
并进一步与tcpdump和tcpdump的输出调试是相同的输出,当有人试图连接到其上没有进程监听的端口。 但正如前面所示netstat显示的是在听的过程,我们可以从本地主机连接的过程。
tcpdump的输出:
root@dcee7e74266f:/test# tcpdump -s0 host 10.0.0.195
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
23:44:45.978583 IP dcee7e74266f.52148 > orderer.dscsa_net.7050: Flags [S], seq 3845506108, win 28200, options [mss 1410,sackOK,TS val 4203049443 ecr 0,nop,wscale 7], length 0
23:44:45.979324 IP orderer.dscsa_net.7050 > dcee7e74266f.52148: Flags [R.], seq 0, ack 3845506109, win 0, length 0
在R标志告诉客户重置连接。
traceroute的输出:
root@dcee7e74266f:/test# traceroute 10.0.0.195
traceroute to 10.0.0.195 (10.0.0.195), 30 hops max, 60 byte packets
1 orderer.dscsa_net (10.0.0.195) 1.008 ms 0.900 ms 0.872 ms