![](https://masaki-note.com/wp-content/uploads/2020/11/ferenc-almasi-eYpcLDXHVb0-unsplash-1024x683.jpg)
nvidia-dockerをインストールしてコンテナ内でGPUを使えるようにする方法
NVIDIAのGPUを搭載しているPC(Ubuntu)でdockerを使うことを考える。
docker内でもGPUを使いたい場合にはnvidia-dockerをインストールすると便利なので以下でインストールする方法をまとめておく。
今回はUbuntu16.04の場合。18.04でも基本的には同じはず。
また、dockerがインストールされていることが前提としている。
nvidia-docker 2.0をインストールする
以下のコマンドで、aptリポジトリに必要なパッケージリポジトリパスを追加する。
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/ubuntu16.04/amd64/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
そして、以下のコマンドでリポジトリをアップデートする。
sudo apt update
以下のコマンドで、nvidia-docker 2.0をインストールする。
sudo apt install -y nvidia-docker2
次に、dockerのデーモン設定をリロードする。
sudo pkill -SIGHUP dockerd
ちなみに、デーモンとは↓のこと(参考)。
Linuxでは、システムが必要とするプロセスやサーバープロセスなどを、バックグラウンドで常駐さておきます。 このような常駐プログラムを、”デーモン=daemon”と呼びます。
そして、docker環境で、nvidia-smiを実行し、動作確認をする。
docker run --runtime=nvidia --rm nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04 nvidia-smi
docker imageはcuda10.0、cudnn7のバージョンに合うものにしている。
dockerのイメージを入手しコンテナを作成する
以下のコマンドでこのdocker imageを入手する。
docker pull nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04
次に、以下のコマンドでコンテナを作成する。
nvidia-docker run -it --name masaki 68cfebc80395 /bin/bash
「masaki」はコンテナの名前で自分の好きなものに設定する。
「68cfebc80395」はdocker imageのIDで以下のコマンドで確認できる。
docker images
これでコンテナ内でGPUを使ってプログラムを実行することが出来た。
ただ、以下のコマンドでNVIDIAドライバを認識するのには失敗している。
なぜかは分かっていないけど、↑で同じようなコマンドでnvidia-smiできているのでまあ大丈夫か。
docker run --gpus all nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04 nvidia-smi
参考
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9bnZpZGlhLWRvY2tlcjIlRTMlODElQUUlRTMlODIlQTQlRTMlODMlQjMlRTMlODIlQjklRTMlODMlODglRTMlODMlQkMlRTMlODMlQUIlRUYlQkMlODhPbiUyMFVidW50dSUyMDE2LjA0JTIwTFRTJUVGJUJDJTg5JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz00ZGMwNDdkYmU3N2FkZDYxMzFmYTE0NmQxMjdlZDc5Nw&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTcxNiZ0eHQ9JTQwc3BpZGVyeF9qcCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTMyJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9ZDZmODE5MDIzZDkyZDY2ZjM2NjQ3NzU3ZTFkMjQxODY&blend-x=142&blend-y=491&blend-mode=normal&s=67e5c4cf1e1fbff4a3c626d312200fff)
nvidia-docker2のインストール(On Ubuntu 16.04 LTS) - Qiita
nvidia-dockerをインストールして、DNN環境の構築を先人の方のページを参考にしながら進めています。nvidia-dockerは、Version 2.0がリリースされているようなので、2…
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9RG9ja2VyJUUzJTgyJTkyJUU0JUJEJUJGJUUzJTgxJUEzJUUzJTgxJUE2JUU3JTg4JTg2JUU5JTgwJTlGJUUzJTgxJUE3R1BVJUUzJTgyJTkyJUU4JUE4JUFEJUU1JUFFJTlBJUUzJTgxJTk5JUUzJTgyJThCJUU2JTk2JUI5JUU2JUIzJTk1JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0xY2ZlOWVmMDUxMWMyMGU0NmU1NjgzN2ViNzcyMGNmYQ&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTcxNiZ0eHQ9JTQwdGF0c3V5YTExYmJzJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzImdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1iOGRjMzhiMWE5YThmNTFjMzVlZWRlZTgxNWRkNmJmMA&blend-x=142&blend-y=491&blend-mode=normal&s=83ddb5cb9dbd55785b2cf3aa6b81b333)
Dockerを使って爆速でGPUを設定する方法 - Qiita
#はじめに機械学習をやろうと思ったら、まずやってくるのが GPUの設定 ですよね。ドライバインストールしてCUDAとcudnnインストールして、、、。これが本当にめんどくさい!そんな方には Doc…