docker容器内ping外网能通,curl不通

排查原因是因为,在服务器上查看ifconfig,显示docker0的mtu是1500,网卡的mtu是1450。

mtu是指在网络通信中能够承载的最大数据包大小。一般情况下,docker的mtu默认为1500字节。

然而,不同的网络设备和网络配置可能会导致mtu大小不一致,这就会影响网络传输的性能。 当数据包的大小超过网卡的mtu时,就会发生数据包分片,这会增加网络传输的延迟和丢包的风险

比如docekr0的mtu大于网卡的mtu,就会丢包,造成的结果就是能ping通外网,但是curl不通。

解决方式是把docker0的mtu改为1450。

准备测试镜像(留言领取)

docker run -it --rm --name nginx nginx:v2 sh

检查网卡的mtu值

检查docker容器的mtu值

设置docker0的mtu值为1450

分为两种修改方式,分别是docker容器和docker compose配置,看自己需求。

docker容器配置

1.使用编辑器打开 Docker Daemon 的配置文件:

vim /etc/docker/daemon.json

2.在配置文件中添加或修改 mtu 项,并设置为你想要的 MTU 值:

{
  "mtu": 1450
}
docker compose配置

在docker-compose文件网络配置这一块,指定容器的mtu为1450

networks:
  default:
    driver: bridge
    driver_opts:
      com.docker.network.driver.mtu: 1450

重启docker

systemctl restart docker
  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值