Dockerトラブルシューティング

提供: Eospedia
移動: 案内検索

rootユーザーだとGPU使えるけどノーマルユーザーだとGPU使えない

症状

rootユーザー

(host)$ docker exec -it relion-docker bash

(container)[root@relion-docker softwares]# nvidia-smi
Sat May 18 09:35:06 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.74       Driver Version: 418.74       CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 1080    Off  | 00000000:05:00.0  On |                  N/A |
| 29%   44C    P8     7W / 180W |     72MiB /  8119MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  GeForce GTX 1080    Off  | 00000000:06:00.0 Off |                  N/A |
| 27%   41C    P8     6W / 180W |      2MiB /  8119MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   2  GeForce GTX 1080    Off  | 00000000:09:00.0 Off |                  N/A |
| 27%   37C    P8     6W / 180W |      2MiB /  8119MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   3  GeForce GTX 1080    Off  | 00000000:0A:00.0 Off |                  N/A |
| 27%   37C    P8     6W / 180W |      2MiB /  8119MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

ノーマルユーザー(Dockerイメージビルド時に作成済みのユーザー)

(host)$ docker exec -u kttn -it relion-docker bash

(container)[kttn@relion-docker ~]$ nvidia-smi
Failed to initialize NVML: Insufficient Permissions


全くわからん

Ubuntu14.04でDocker動かしてた頃は特に問題起きなかったんだが、てことはホスト側の問題?


対処

まさかのVirtualGLのせいだった。GPUデバイスの所有者グループがvglusersに書き換えられる問題。→ NVIDIA Dockerのインストール の下の方。問題児か。(アップグレード前のホストマシンUbuntu 14.04時代はまだVirtualGL入れてなかったので、それで問題が起きなかった)

対処策

(contianer) $ sudo groupadd -g <ホストマシンにおけるvglusersのGID> vglusers
(contianer) $ sudo usermod -aG vglusers <non-rootユーザーのユーザー名>


vgl厄介だな。。


CMD ["/usr/sbin/sshd", "-D"] してるのにコンテナ立ち上げてもすぐExitしてしまうんだけど

なんで? ネットの情報だと run -d でsshアクセス可能な状態になってくれる感じなんだがそうならない

$ docker logs upbeat_liskov

Missing privilege separation directory: /var/run/sshd


/var/run/sshdというディレクトリをあらかじめ作っておかないといけないらしい

→ Dockerfileに RUN mkdir -p /var/run/sshd 加えて再ビルドしたら大丈夫になった。