[问题解决] docker run 端口映射失败且无报错
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。Docker版本:2:1.13.1-96.gitb2f74b2.tl2问题描述网上对于这个问题的已有回答在这一个时间点看来都没什么意义。启动容器的时候进行端口映射,不报任何错误,但是所有端口都映射失败,如下显示:在容器内部执行tcpdum
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。
Docker版本:2:1.13.1-96.gitb2f74b2.tl2
问题描述
网上对于这个问题的已有回答在这一个时间点看来都没什么意义。
启动容器的时候进行端口映射,不报任何错误,但是所有端口都映射失败,如下显示:
在容器内部执行tcpdump -i bond1 port 24761
可以看到宿主机可以收到数据包,但是容器内部收不到。
问题解决
其实花了点时间才定位到容器网络上。
可以看到这台机器并没有使用默认的 Bridge 模式,而是 使用 host 模式,其实问题能定位到这已经快解决了。
执行docker inspect mydatabase_1 | grep Net
可以看到容器的默认网络模式是“Bridge”,而且此时我也注意到容器内部只有一个回环网卡而没有虚拟网卡。
此时两个解决方案,一个是添加 docker0 网桥,步骤可以参考[1]。要么启动的时候指定容器网络模式为host,即添加--net=host
。
问题的关键在于以 Bridge 模式 docker run
的时候没有检测到网桥竟然没有任何报错,就这样连虚拟网卡也没有就启动了,这样这容器有啥用2333。这看上去是一个不折不扣的bug,也不知道新版本有没有修改。
参考:
更多推荐
所有评论(0)