こんにちは、chlochanです。Ubuntu 18.04 + CUDA10 に移行したのですが、CUDA9.0 の環境が必要な場合もあるので、nvidia-docker2 を使って CUDA9.0 の環境を作ります。
docker をインストールする
まず docker をインストールします。
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce
インストール出来たか確認してみます。
$ sudo docker container run hello-world
$ sudo docker image
$ sudo docker ps -a
問題なければ hello-world のコンテナとdockerイメージを削除します。
$ sudo docker container rm <hello-worldのコンテナID>
$ sudo docker rmi hello-world
nvidia-docker2 をインストールします。
現在、GPUを使うディープラーニング用のツール類は、CUDAのバージョンに依存しています。たとえば TensorFlow Ver1.12 の コンパイル済みバイナリーイメージ は、CUDA9.0 のライブラリが無いと実行時にエラーとなります。よって、使いたいツールが要求するバージョンの CUDA Toolkit をインストールする必要があります。nvidia-docker2 は、Docker のコンテナランタイムで、これを使うと、ホストOS の CUDA Driver を最新のものにしておけば、コンテナ毎に異なるバージョン の CUDA Toolkit を使う事ができる様になり、運用が非常に楽になります。
以下の Quickstart に従ってインストールします。
https://github.com/NVIDIA/nvidia-docker
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
sudo tee /etc/apt/sources.list.d/nvidia-docker.list
$ sudo apt-get update
$ sudo apt-get install -y nvidia-docker2
$ sudo pkill -SIGHUP dockerd
以下をみたところ、9.0-cudnn7-devel が CUDA9.0 のすべてをインストールするイメージなので、それで動作確認してみます。
https://hub.docker.com/r/nvidia/cuda/
$ sudo docker container run --runtime=nvidia --rm nvidia/cuda:9.0-cudnn7-devel nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.176
V9.0.176 になっている事を確認します。