docker 容器互通端口场景测试

docker 容器互通端口场景测试

172.26.11.221 > 容器1

172.26.11.222 

场景一:通过在172.26.11.222 执行命令 nc -l 1234,然后在容器1中 nc 172.26.11.222 1234

然后在容器1执行netstat -nlap

显示:

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   

tcp        0      0 172.17.0.2:47014            172.26.11.222:1234          ESTABLISHED 525/nc   

然后在容器1宿主机上172.26.11.221执行命令:netstat -nlap|grep 47014 为空

然后在172.26.11.222 执行命令 netstat -nlap|grep 47014

tcp        0      0 172.26.11.222:1234      172.26.11.221:47014     ESTABLISHED 6008/nc 

47014端口对应的是172.26.11.221端口,但是在172.26.11.221查看又没有47014端口

总结:

当容器1和172.26.11.222建立tcp通讯时,容器1内部启动端口47014,与宿主机172.26.11.221,外有一个端口映射,通过这个映射关系和外面建立tcp连接通讯

场景二:容器1 启动dubbo服务,注册到zk中,在zk控制台显示的容器的ip,端口号(根据场景一,此时和zk建立连接的是容器1宿主机172.26.11.221)

dubbo这种场景,docker容器网络互通没问题

通过echo cons | nc 127.0.0.1 2181 查看客户端连接信息

 /172.26.11.224:46552[1](queued=0,recved=2,sent=2,sid=0x158eb8f374d0004,lop=PING,est=1481426888544,to=30000,lcxid=0x0,lzxid=0xa,lresp=1481426898571,llat=0,minlat=0,avglat=25,maxlat=50)

 /127.0.0.1:39315[0](queued=0,recved=1,sent=0)

 /172.26.11.224:60971[1](queued=0,recved=553,sent=553,sid=0x158eb8f374d0001,lop=PING,est=1481421373591,to=30000,lcxid=0x0,lzxid=0xa,lresp=1481426897377,llat=0,minlat=0,avglat=0,maxlat=17)

 即使是容器内部连接过来的,显示的还是容器宿主机的ip

场景三:外部访问容器http服务,通过docker 原生容器通讯只能做到容器间的通讯,容器访问宿主机,做不到宿主机访问容器

换一种docker网络通讯模式flannel

猜你喜欢

转载自m635674608.iteye.com/blog/2344230