gpt4 book ai didi

docker - curl卡在docker中,但不在主机上

转载 作者:行者123 更新时间:2023-12-04 18:26:12 24 4
gpt4 key购买 nike

我们目前遇到的问题是 curl bigquery.googleapis.com有时会无限期地卡在 ubuntu:20.04 中本地 docker 容器,但始终在主机 macOS 机器上和生产环境中工作(返回 404)。容器正在运行 Python Flask 应用程序。
一些观察:

  • 很古怪,curl bigquery.googleapis.com在容器初始化时工作,但在大约 10 分钟后再次尝试挂起。最终,该命令将再次起作用,curl -v显示它正在尝试连接到不同的 IP。
  • 我们在生产或任何主机上都没有这个问题。
  • 我们团队中的不同人在不同的时间、不同的 IP 上遇到了这个问题。
  • 在此问题期间,与其他 Google 服务的连接(例如 curl servicemanagement.googleapis.com )工作正常。
  • 在问题期间,该命令在另一个具有不同图像的 docker 容器中工作。
  • 许多 macOS Docker 版本都出现了问题。
  • 直接 curl 到 IPv4 地址也会挂起。

  • 有趣的是,做 netstat在主机上将所有连接显示为 ESTABLISHED , 但是做 netstat在容器内将它们显示为 SYN_SENT .
    我们假设连接在主机上保持事件状态,但在容器中被终止。或者,由于某种原因,某些 ACK 没有正确转发到容器。
    netstat macOS
    netstat inside container
    netstat容器内
    netstat on host
    TCP 转储
    TCP Dump
    curl -v 输出
    root@cf8bd850e9ab:/code# curl -v bigquery.googleapis.com
    * Trying 142.251.35.170:80...
    * TCP_NODELAY set
    * Trying 2607:f8b0:4006:81e::200a:80...
    * TCP_NODELAY set
    * Immediate connect fail for 2607:f8b0:4006:81e::200a: Cannot assign requested address
    * Trying 2607:f8b0:4006:81e::200a:80...
    * TCP_NODELAY set
    * Immediate connect fail for 2607:f8b0:4006:81e::200a: Cannot assign requested address
    * Trying 2607:f8b0:4006:81e::200a:80...
    * TCP_NODELAY set
    * Immediate connect fail for 2607:f8b0:4006:81e::200a: Cannot assign requested address
    * Trying 2607:f8b0:4006:81e::200a:80...
    * TCP_NODELAY set
    * Immediate connect fail for 2607:f8b0:4006:81e::200a: Cannot assign requested address
    附加输出:
  • netstat -p : https://pastebin.com/sKQ23yah
  • curl --ipv4 : https://pastebin.com/3N7Q6aB4
  • 最佳答案

    您可以在运行容器时使用 --dns 指定 DNS标志,或者您可以通过在 /etc/docker/daemon.json 中添加条目来配置它这可能有助于解决问题。

    关于docker - curl卡在docker中,但不在主机上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72538103/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com