`docker-compose up` 使用 UnixHTTPConnectionPool 超时

jle*_*hon 39 go docker docker-compose

在我们的 Jenkins 代理中,我们运行了几个(大约 20 个)测试,其设置涉及运行docker-compose up“大量”服务/容器(大约 14 个)。

有时,我会收到以下错误:

ERROR: for testdb-data  UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)
An HTTP request took too long to complete. Retry with --verbose to obtain debug information.
If you encounter this issue regularly because of slow network conditions, consider setting COMPOSE_HTTP_TIMEOUT to a higher value (current value: 60).
Run Code Online (Sandbox Code Playgroud)

一直无法重现这一点。而且我仍在尝试弄清楚是否与我们的代理资源得到充分利用有关。

docker -v1.10.1并且docker-compose -v1.13.1

关于这可能与什么有关的任何想法?

saj*_*adG 39

重启docker服务:

sudo systemctl restart docker
Run Code Online (Sandbox Code Playgroud)

以及设置DOCKER_CLIENT_TIMEOUTCOMPOSE_HTTP_TIMEOUT环境变量:

export DOCKER_CLIENT_TIMEOUT=120
export COMPOSE_HTTP_TIMEOUT=120
Run Code Online (Sandbox Code Playgroud)

目前有两种解决方法。但是问题在 docker compose github 中仍然存在:

https://github.com/docker/compose/issues/3927

https://github.com/docker/compose/issues/4486

https://github.com/docker/compose/issues/3834

  • 对我来说,我的 docker 网络似乎没有正确删除并且已经“崩溃”。上述建议对我来说不起作用。所以我采取了稍微修改的方法:`sudo systemctl restart docker && sudo docker system prune -af`。第二个命令删除docker上的所有资源(包括网络) (3认同)
  • 其中一个问题是我提出的。就我而言,它有助于增加超时时间,并且避免在功能不够强大的机器上同时启动太多容器。 (2认同)
  • 由于我的机器规格低,增加超时对我的情况没有帮助。你是对的。这似乎是机器资源限制。但是我找不到与每个容器的资源量相关的任何信息!感谢@jleeothon 的评论。 (2认同)
  • 我的团队所做的另一件事是制作一个脚本来启动一批容器,等待它们运行良好,然后再启动另一批容器,依此类推。这样计算机就不会被启动期间运行的所有操作所淹没。 (2认同)
  • 嗯,我在 Azure 上有 2 个 F 系列 64 核虚拟机,但它们仍然面临同样的问题。增加超时没有帮助。重启docker就可以了。 (2认同)

小智 7

docker-compose down
Run Code Online (Sandbox Code Playgroud)

运行docker-compose down然后运行docker-compose up --build可能会起作用。我正在研究 vscode,当我在构建 docker 时遇到类似的问题时,这个解决方案对我有用。

在执行上述命令之前,最好先参考docker-compose down 的目的是什么


Yor*_*uba 7

我有同样的问题。将最大文件大小值从数字更改为字符串后解决了这个问题。

错误的配置

logging:
 options:
       max-file: 10
       max-size: 10m
Run Code Online (Sandbox Code Playgroud)

正确的配置

logging:
 options:
       max-file: "10"
       max-size: 10m
Run Code Online (Sandbox Code Playgroud)


小智 6

docker-compose restart
Run Code Online (Sandbox Code Playgroud)

解决了我的问题。这将重新启动所有已停止和正在运行的服务。