docker - Docker 权限不足,无法设置线程优先级
问题描述
在 Docker 上运行多线程库时出现此错误。
Insufficient permissions to set thread priority. Please retry as root.
因此,我尝试使用选项运行映像,该-u
选项指定使用 id 为 0 的 root 用户运行/bin/bash
:
docker run -u 0 --rm -it img bash
或者
docker run -u root --rm -it img bash
如果我运行命令而不是 bash,也会发生同样的情况
docker run -u root --rm -it img './threading_test'
但实际上它并没有解决权限问题,并且仍然出现错误。
[更新]
添加Dockerfile
FROM ubuntu:18.04
MAINTAINER Loreto Parisi loretoparisi@gmail.com
RUN apt-get update && apt-get install -y libcap2-bin
COPY ./src .
CMD ["./y-cruncher"]
我添加了默认情况下未安装libcap2-bin
since 命令。capsh
正如建议的那样,capsh --print
功能检查将返回
root@d24d02a2ee8c:/# capsh --print
Current: = cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_sys_nice,cap_mknod,cap_audit_write,cap_setfcap+eip
Bounding set =cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_sys_nice,cap_mknod,cap_audit_write,cap_setfcap
Securebits: 00/0x0/1'b0
secure-noroot: no (unlocked)
secure-no-suid-fixup: no (unlocked)
secure-keep-caps: no (unlocked)
uid=0(root)
gid=0(root)
groups=
运行命令是docker run --rm -it --cap-add=sys_nice y-cruncher
因为我已经设置CMD ["./y-cruncher"]
了Dockerfile
默认值。
解决方案
通常,您需要赋予容器CAP_SYS_NICE
设置优先级的能力。
y-cruncher 需要以 root 用户运行,否则会出现错误消息
赋予CAP_SYS_NICE
能力前的测试:
Launching y-cruncher...
================================================================
Insufficient permissions to set thread priority. Please retry as root.
Further messages for this warning will be suppressed.
Checking processor/OS features...
Required Features:
x64, ABM, BMI1, BMI2, ADX,
SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2,
AVX, FMA3, AVX2
Parsing Core -> Handle Mappings...
Cores: 0-3
Parsing NUMA -> Core Mappings...
Node 0: 0-3
y-cruncher v0.7.7 Build 9499 ( www.numberworld.org )
Copyright 2008-2020 Alexander J. Yee ( a-yee@u.northwestern.edu )
赋予CAP_SYS_NICE
能力后的测试:--cap-add=sys_nice ubuntu:latest
Launching y-cruncher...
================================================================
Checking processor/OS features...
Required Features:
x64, ABM, BMI1, BMI2, ADX,
SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2,
AVX, FMA3, AVX2
Parsing Core -> Handle Mappings...
Cores: 0-3
Parsing NUMA -> Core Mappings...
Node 0: 0-3
y-cruncher v0.7.7 Build 9499 ( www.numberworld.org )
Copyright 2008-2020 Alexander J. Yee ( a-yee@u.northwestern.edu )
值得一提的是,确保内核本身启用了所需的功能,
capsh --print
但CAP_SYS_NICE
默认情况下应该存在于主机上
推荐阅读
- mysql - 求和类似值 MySQL 后每种类型的最大值
- reactjs - 在 React 中触发 bootstrap 5 模态确认
- flutter - 制作发布 apk 或在发布模式下运行应用程序时出错
- java - 将颜色的 xml 整数数组转换为字符串数组返回空值 - 如何以编程方式将其转换为十六进制?
- python - 11 个具有重复代码行的函数 - 有没有办法减少冗余?
- python - 不能再用 python 2.7 安装 pip 了?
- ionic-framework - Ionic 5-单击重置按钮时清除搜索框文本
- rust - `HashMap 没有实现特征`IntoWasmAbi`
- python-3.x - 有没有办法使用 beam.Pipeline(relational_db) 更新 postgres sql 中的记录
- qt - 构建 openCV 和 Qt 项目和链接错误:未定义的引用和错误的 reloc 地址 0x1 在节