Почему Docker, запущенный в режиме демона (-d), получает запрещенное разрешение (selinux), а не в интерактивном режиме (-ti) - PullRequest
0 голосов
/ 30 августа 2018

Вопрос:

Может кто-нибудь объяснить мне, почему правила selinux применяются в случае запуска контейнера в режиме демона, но не в интерактивном режиме?

Вариант использования:

Я использую докер-контейнер с поддержкой nvidia-gpu.

Когда я пытаюсь запустить его в интерактивном режиме, все работает нормально:

docker run -ti --runtime=nvidia --user jovyan -p 81:8888 hub-nbk-gpu:stable nvidia-smi
Thu Aug 30 14:07:53 2018
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 396.26                 Driver Version: 396.26                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla P100-PCIE...  Off  | 00000000:00:1F.0 Off |                    0 |
| N/A   32C    P0    28W / 250W |      0MiB / 16280MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

Но когда я хочу запустить его в режиме демона, selinux, кажется, блокирует его:

docker run -d --runtime=nvidia --user jovyan -p 81:8888 hub-nbk-gpu:stable
4ad334909bb963aa29d63c0929f79a3beb0ce015685d1a5835dda4137cbff367
docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "permission denied": unknown.

Конечно, если я отключаю selinux, все работает нормально:

getenforce
Enforcing

sudo setenforce 0

getenforce
Permissive

docker run -d --runtime=nvidia --user jovyan -p 81:8888 hub-nbk-gpu:stable
83fd5ca737523c8757005ce80999c52081c23360b3deb9603e8d86eb357aa64a
...