【问题标题】:My Docker containers can ping but can't curl URL我的 Docker 容器可以 ping 但不能 curl URL
【发布时间】:2022-11-19 22:29:39
【问题描述】:

我在 Ubuntu 服务器 22.04 下使用 Docker 版本 20.10.21。 从一周前开始,我的 Docker 容器无法访问互联网上的公共 API(例如 Public holidays in France)。他们可以在 apt update 和 upgrade 完成之前到达它。

我认为这首先是与 Docker 桥接网络相关的问题,所以我尝试了这个解决方案: My docker container has no internet

然后,我试过了

docker network prune

,然后我尝试卸载并重新安装 Docker。

经过调查,我的诊断是错误的,因为我可以 ping 公共名称,但我无法卷曲任何 URL:

我不明白为什么这个问题突然发生,我想解决这个问题。

更新:

Docker 容器无法卷曲任何 URL,但我的 Ubuntu 主机可以。

使用 docker 主机网络,curl 正在为给定的 API 工作。

另一方面,如果我在我的开发计算机上的 Docker Desktop 上运行相同的容器,那效果很好。

【问题讨论】:

  • 那是一个有效的终点吗? curl https://calendrier.api.gouv.fr 有效吗?
  • 不,它没有。我不能卷曲任何 url,甚至 google.com ......但是 Docker 主机可以。
  • docker container inspect 开始找出容器正在使用哪个网络,然后使用 docker network inspect 并在您的问题中发布网络配置。当然,还要检查主机的防火墙设置。

标签: docker curl ubuntu-22.04


【解决方案1】:

我终于发现了问题所在。我的主机网络接口的 MTU 与 docker 网络的默认值 (1500) 不同。

我检查了我的网络接口 MTU:

ip a | grep mtu

然后,我在 /etc/docker/daemon.json 中设置了 docker 守护进程的 MTU:

{
    "mtu" : 1280
}

然后不要忘记重启docker:

systemctl restart docker

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多