在服务器中使用Dockerfile构建镜像出bug:RuntimeError: can‘t start new thread

在windows环境下构建镜像没有任何问题,不知道为什么到centos环境下bug频出


51.05   File "/usr/local/lib/python3.8/threading.py", line 852, in start
51.05     _start_new_thread(self._bootstrap, ())
51.05 RuntimeError: can't start new thread
51.83 
51.83 [notice] A new release of pip is available: 23.0.1 -> 24.2
51.83 [notice] To update, run: pip install --upgrade pip
------
ERROR: failed to solve: failed to solve with frontend dockerfile.v0: failed to build LLB: executor failed running [/bin/sh -c pip install --upgrade pip     && pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt]: runc did not terminate sucessfully

在pip install的时候报错RuntimeError: can't start new thread


解决方法:在dockerfile文件中增加一行
# 关闭pip进度条展示 RUN pip config set global.progress_bar off

解释原因

  1. 线程资源限制: Docker 容器可能有默认或显式设置的资源限制,如 CPU 限制、内存限制和可用线程数限制。在这种情况下,pip 的进度条尝试创建新线程来处理进度条更新,这可能会超出容器允许的线程数上限。

  2. 关闭进度条减少线程使用: 通过禁用进度条,pip 不再创建额外的线程来处理 UI 更新,这样就减少了对线程资源的需求。因此,当你通过 pip config set global.progress_bar off 关闭进度条时,pip 的操作只会在主线程中执行,避免了线程资源耗尽导致的错误。


构建成功镜像之后运行又容器报错如下:
OpenBLAS blas_thread_init: pthread_create failed for thread 1 of 4: Operation not permitted
解决方法:docker run -it --name XXX –-privileged=true

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值