0
点赞
收藏
分享

微信扫一扫

[问题解决] docker run 端口映射失败且无报错


问题描述

网上对于这个问题的已有回答在这一个时间点看来都没什么意义。

启动容器的时候进行端口映射,不报任何错误,但是所有端口都映射失败,如下显示:

[问题解决] docker run 端口映射失败且无报错_自定义

在容器内部执行​​tcpdump -i bond1 port 24761​​可以看到宿主机可以收到数据包,但是容器内部收不到。

问题解决

其实花了点时间才定位到容器网络上。

[问题解决] docker run 端口映射失败且无报错_容器_02


可以看到这台机器并没有使用默认的 Bridge 模式,而是 使用 host 模式,其实问题能定位到这已经快解决了。

执行​​docker inspect mydatabase_1 | grep Net​​可以看到容器的默认网络模式是“Bridge”,而且此时我也注意到容器内部只有一个回环网卡而没有虚拟网卡。

此时两个解决方案,一个是添加 docker0 网桥,步骤可以参考[1]。要么启动的时候指定容器网络模式为host,即添加​​--net=host​​。

问题的关键在于以 Bridge 模式 ​​docker run​​的时候没有检测到网桥竟然没有任何报错,就这样连虚拟网卡也没有就启动了,这样这容器有啥用2333。这看上去是一个不折不扣的bug,也不知道新版本有没有修改。

参考:

  1. ​​云计算核心技术Docker教程:配置 docker0 网桥和自定义网桥​​


举报

相关推荐

0 条评论