環境
- docker
- nvidia/cuda:10.0-runtime-ubuntu18.04
やりたいこと
docker build時にも --runtime=nvidiaしたい!!!!!!!
周知の通り、nvidiaはDockerに対してランタイムという形でCUDA環境を提供している。つまり、nvidia-dockerをインストールすると、Dockerのランタイム機能であたかもそのDocker Image内にCUDAがインストールされているかのように扱うことができる。
例えば以下の例
docker run --runtime=nvidia --rm nvidia/cuda:10.0-base nvidia-smi
--runtime=nvidia
をつけるだけ つよい
が、build時には何故かruntimeを指定することができない
なんでや
方法
現在のところ、デフォルトランタイムというオプションがあって、それをnvidia指定にするしかない
指定する方法は以下
/etc/docker/daemon.json にてdefault-runtimeを追記するだけ
{ "default-runtime": "nvidia", "runtimes": { "nvidia": { "path": "/usr/bin/nvidia-container-runtime", "runtimeArgs": [] } } }
でDockerサービスを再起動
# systemctl restart docker
確認
Default RuntimeがnvidiaになっていればOK
docker info 2> /dev/null | grep -i runtime Runtimes: nvidia runc Default Runtime: nvidia
これでruntime=nvidiaを指定しなくても自動的にnvidiaが有効になる。
# 以下も叩けるはず docker run --rm nvidia/cuda:10.0-base nvidia-smi
当然全Dockerに対して有効になってしまうので、諸刃の剣な気がする。やっぱりdocker build時に指定できるようになってほしい。。。