Docker Недостаточно прав для установки приоритета потока - PullRequest
0 голосов
/ 16 марта 2019

Я получаю эту ошибку при запуске многопоточной библиотеки в Docker.

Insufficient permissions to set thread priority. Please retry as root.

Поэтому я попытался запустить образ с параметром -u, который указывает, что для запуска /bin/bash:

будет использоваться пользователь root с идентификатором 0.
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'

Но на самом деле это не решает проблему с разрешениями, и все равно получает ошибку.

[UPDATE]

Добавление 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, так как команда 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 по умолчанию.

Ответы [ 2 ]

1 голос
/ 17 марта 2019

В общем случае вам нужно предоставить контейнеру 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

1 голос
/ 17 марта 2019

Похоже, проблема с приложением.Неподходящее выполнение имеет ту же проблему:

$ id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
$ ./y-cruncher-static/y-cruncher | grep 'Insufficient'
Insufficient permissions to set thread priority. Please retry as root.

Выполнение Docker:

$ docker run --rm -v $PWD/y-cruncher-static:/y-cruncher-static --privileged --security-opt seccomp=unconfined -ti ubuntu bash -c "/y-cruncher-static/y-cruncher | grep 'Insufficient'"
Insufficient permissions to set thread priority. Please retry as root.

Отладочная информация:

$ capsh --print
Current: = cap_chown,cap_dac_override,cap_dac_read_search,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_linux_immutable,cap_net_bind_service,cap_net_broadcast,cap_net_admin,cap_net_raw,cap_ipc_lock,cap_ipc_owner,cap_sys_module,cap_sys_rawio,cap_sys_chroot,cap_sys_ptrace,cap_sys_pacct,cap_sys_admin,cap_sys_boot,cap_sys_nice,cap_sys_resource,cap_sys_time,cap_sys_tty_config,cap_mknod,cap_lease,cap_audit_write,cap_audit_control,cap_setfcap,cap_mac_override,cap_mac_admin,cap_syslog,35,36+ep
Bounding set =cap_chown,cap_dac_override,cap_dac_read_search,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_linux_immutable,cap_net_bind_service,cap_net_broadcast,cap_net_admin,cap_net_raw,cap_ipc_lock,cap_ipc_owner,cap_sys_module,cap_sys_rawio,cap_sys_chroot,cap_sys_ptrace,cap_sys_pacct,cap_sys_admin,cap_sys_boot,cap_sys_nice,cap_sys_resource,cap_sys_time,cap_sys_tty_config,cap_mknod,cap_lease,cap_audit_write,cap_audit_control,cap_setfcap,cap_mac_override,cap_mac_admin,cap_syslog,35,36
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=0(root)
$ uname -a
Linux dockerhost 3.10.0-862.14.4.el7.x86_64 #1 SMP Wed Sep 26 15:12:11 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...