当前位置: 首页 > news >正文

docker启动线程创建异常 pthread_create EPERM | RuntimeError: can‘t start new thread

直接说答案,着急就复制过去使用

docker配置增加对应权限配置参数即可

--privileged

如果上述不行,docker配置使用组合方式

--privileged\--ulimitnproc=65535:65535\--ulimitnofile=65535:65535\

详细解释

下面逐项解释这些 Docker 参数的作用、底层含义、适用场景,以及可能的副作用。


1.--privileged

--privileged

作用

给容器“接近宿主机 root”的权限。

默认情况下:

  • Docker 会限制容器:

    • Linux Capabilities
    • /dev设备访问
    • 内核接口
    • AppArmor / SELinux
    • cgroup 权限

加上:

--privileged

后:

  • 容器获得所有 Linux capabilities
  • 可以访问所有设备
  • 可以执行很多原本禁止的操作
  • AppArmor/SELinux 限制会被放宽
  • 基本等于“容器内 root ≈ 宿主机 root”

常见用途

1)Docker in Docker

例如:

dockerrun--privilegeddocker:dind

容器里再运行 Docker。


2)需要操作内核

例如:

  • 挂载文件系统
  • 修改 iptables
  • 使用 FUSE
  • 操作/sys
  • 加载内核模块

3)某些 AI / GPU / 驱动环境

某些推理框架需要:

  • /dev/kfd
  • /dev/dri
  • RDMA
  • InfiniBand

风险

非常大。

如果容器被入侵:

  • 可能直接控制宿主机
  • 可逃逸
  • 可读取宿主机设备
  • 可修改网络

生产环境一般:

  • 不建议使用
  • 除非明确知道原因

更安全替代方案

通常只增加必要 capability:

--cap-add NET_ADMIN--device/dev/fuse

而不是直接 privileged。


2.--ulimit nproc=65535:65535

--ulimitnproc=65535:65535

作用

限制容器内:

单用户可创建的最大进程数(process number)

对应 Linux:

ulimit-u

格式

soft:hard

这里:

65535:65535

表示:

  • soft limit = 65535
  • hard limit = 65535

soft/hard 区别

soft

当前生效限制。

普通程序可以降低。


hard

上限。

只有 root 才能提高到 hard。


为什么需要调大?

某些程序:

  • Java
  • Python 多线程
  • OpenBLAS
  • TensorFlow
  • Gunicorn
  • gevent
  • JVM
  • 大量协程框架

会创建很多:

  • 线程
  • worker
  • fork

Linux 线程本质也是 task/process。

默认可能只有:

10244096

容易出现:

pthread_create failed Resource temporarily unavailable can't start new thread

你之前遇到的典型错误

你之前 Docker 里:

thread create failed

大概率就和:

  • nproc 太小
  • OpenBLAS 创建线程失败

有关。


3.--ulimit nofile=65535:65535

--ulimitnofile=65535:65535

作用

限制:

最大可打开文件描述符数量(FD)

对应:

ulimit-n

什么是文件描述符?

Linux 中:

一切皆文件

包括:

  • 文件
  • socket
  • TCP连接
  • 管道
  • epoll
  • device

都占 FD。


默认值通常很低

可能:

10244096

高并发程序很容易炸。


常见错误

1)Too many open files

EMFILE Too manyopenfiles

2)数据库连接异常

MySQL / Redis:

  • 无法建立新连接
  • socket 创建失败

3)Nginx

worker_connections exceedopenfileresource limit

为什么 AI / Python 容器也要调?

因为:

  • HTTP连接
  • WebSocket
  • 模型 mmap
  • 日志文件
  • multiprocessing pipe

都会占 FD。

报错信息

Failed to start thread"GC Thread#0"- pthread_create failed(EPERM)

或者

Traceback(most recent call last): File"/tmp/main.py", line87,in<module>File"/tmp/main.py", line81,incheck_dependencies File"/usr/local/lib/python3.12/site-packages/moviepy/editor.py", line60,in<module>from .video.io.slidersimportsliders File"/usr/local/lib/python3.12/site-packages/moviepy/video/io/sliders.py", line1,in<module>importmatplotlib.pyplot as plt File"/usr/local/lib/python3.12/site-packages/matplotlib/pyplot.py", line57,in<module>importmatplotlib.image File"/usr/local/lib/python3.12/site-packages/matplotlib/image.py", line25,in<module>from matplotlib.backend_basesimportFigureCanvasBase File"/usr/local/lib/python3.12/site-packages/matplotlib/backend_bases.py", line49,in<module>from matplotlibimport(File"/usr/local/lib/python3.12/site-packages/matplotlib/text.py", line16,in<module>from .font_managerimportFontProperties File"/usr/local/lib/python3.12/site-packages/matplotlib/font_manager.py", line1643,in<module>fontManager=_load_fontmanager()^^^^^^^^^^^^^^^^^^^ File"/usr/local/lib/python3.12/site-packages/matplotlib/font_manager.py", line1637,in_load_fontmanager fm=FontManager()^^^^^^^^^^^^^ File"/usr/local/lib/python3.12/site-packages/matplotlib/font_manager.py", line1097,in__init__ timer.start()File"/usr/local/lib/python3.12/threading.py", line994,instart _start_new_thread(self._bootstrap,())RuntimeError: can't start new thread
http://www.jsqmd.com/news/852470/

相关文章:

  • VSCode在Ubuntu/WSL2里保存文件总报permission denied?可能是这个虚拟化环境特有的坑
  • 2026仓库管理软件厂家优选指南:中小企业数字化仓储选型必看 - 深度智识库
  • Dify工作流引擎架构演进:从低代码到智能编排的技术深度解析
  • 浏览器端音乐文件解密技术深度解析:Unlock Music项目架构与实现原理
  • Perplexity习语查询功能实战指南:3步精准定位地道表达,告别中式英语(附12个高频误用对照表)
  • Windows上的B站原生客户端:如何告别浏览器卡顿,享受丝滑观看体验?
  • AnyKernel3终极指南:5分钟打造通用Android内核刷机包
  • 2026年5月最新美度官方售后网点权威数据验证报告(含迁址新开)实地考察多方对比 - 亨得利官方服务中心
  • 绝绝子!输入关键词,这几款AI论文工具直接生成结构完整的毕业论文
  • GRO淘金优化算法实战:5个工程优化问题调参与性能对比
  • 2026年宁夏注塑机销售公司版图:区域服务商全链路服务分析报告出炉! - 深度智识库
  • 2026东莞户外蚊虫防控全攻略:选型、避坑与实测推荐 - 品牌优选官
  • 别再让VmmemWSL吃光你的内存!手把手教你用.wslconfig给Docker on WSL2瘦身
  • Claude Code 扩展体系
  • DeepSeek R1模型API调用性能对比:v1.2 vs v2.1吞吐量提升47%,但90%开发者忽略了这个Header配置
  • Windows风扇控制终极指南:用FanControl打造静音高效的电脑散热系统
  • 古籍检索效率提升300%的关键一步,Perplexity诗词搜索的隐式韵律建模与跨朝代语义桥接方法论
  • 【Linux内核模块】导出符号详解:模块间的“资源共享”机制
  • 独立开发者如何借助 Taotoken 实现单一应用对接多个主流大模型
  • 抖音视频怎么下载?2026年抖音视频提取方法全解析及工具对比 - 爱上科技热点
  • 矩阵系统的“人效革命“:一个人如何干出一个团队的活?
  • 别再让用户填错表了!用EasyExcel 3.x + POI 4.1.2给Excel模板表头加批注(附完整代码)
  • 单周期CPU设计避坑指南:我在Logisim里调试MIPS指令的那些事儿
  • 3步解锁百度网盘SVIP:从龟速到极速的终极指南
  • 2026济南婚纱照排名|拍摄基地与场景资源TOP5权威评测 - charlieruizvin
  • 深度解读物理AI:人工智能的下一个主战场!
  • 5分钟解锁音乐格式壁垒:Unlock Music开源工具深度解析与实践指南
  • 南京厌学心理咨询机构助力青少年重拾学习动力 - 品牌排行榜
  • 红米K70 Pro Root后能干嘛?分享几个Delta面具模块让你的澎湃OS更好用
  • 2026永城市本地人必选的瓷砖空鼓专业维修公司TOP5推荐!卫生间空鼓翘边,厨房空鼓翘边,客厅空鼓翘边,全天响应,免费上门,5月专业瓷砖空鼓修复公司持证上岗师傅排名最新深度调研方案) - 一休修缮