動かざることバグの如し

近づきたいよ 君の理想に

runtime=nvidiaを有効してdocker buildする

環境

  • 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時に指定できるようになってほしい。。。