在docker容器中能ping www.baidu.com

但是curl www.baidu.com没有反应。

最终排查看到是mtu设置的问题。

MTU( Maximum Transmission Unit,最大传输单位),用来设置描述网络接口的最大传输量,需要注意的是,每个网络接口的MTU都不相同。如果网口的mtu与docker0 mtu不一致,就会导致容器内部能够ping,但是curl不通的情况。

如何解决?

将网口的mtu与docker0 mtu保持一致,一般都是1500

如何查看网络接口的MTU?
ifconfg命令,其中

如何修改网络接口的MTU?

因此你在Linux中使用ifconfig会看到有的接口会有1492bytes,
不过在以太网上,标准的定义就是1500bytes.
修改方法:

方法一:

ifconfig ens42f0np0 mtu 1500

优点:所有Linux发行版通用;
缺点:重启后失效。

方法二:

修改配置文件,永久有效

vi /etc/sysconfig/network-scritps/ens42f0np0

MTU=“1500” #增加这条命令,保存后重启网卡生效

service network restart

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐