イメージの構築段階でユニットテストを実行するGPUアプリケーションがあります。 Docker 19.03では、docker run --gpus all
を使用してnvidiaランタイムを指定できますが、ユニットテストを行うため、docker build
のgpusにもアクセスする必要があります。どうすればこの目標を達成できますか?
Nvidia-docker2を使用する古いバージョンのdockerでは、ビルド段階でランタイムを指定することはできませんでしたが、デフォルトのランタイムをnvidiaに設定することができ、Dockerビルドはそのように正常に機能します。もはやnvidia-dockerを必要としないDocker 19.03でそれを行うことはできますか?もしそうなら、どうですか?
docs で説明されているように、 nvidia-container-runtime を使用する必要があります:「Dockerビルド中にGPUアクセスを行う唯一の方法でもあります」。
Ubuntuの手順:
Nvidia-container-runtimeをインストールします。
Sudo apt-get install nvidia-container-runtime
/etc/docker/daemon.jsonを次の内容で編集/作成します。
{
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
},
"default-runtime": "nvidia"
}
Dockerデーモンを再起動します。
Sudo systemctl restart docker
イメージをビルドします(ビルド中にGPUが利用可能になりました):
docker build -t my_image_name:latest .