概要
docker 上で cuda を動かしたいと思うときがあったので、その方法を調べたところ nvidia container toolkit を使えばいいとわかったので、その手順をまとめました。nvidia-docker や nvidia-docker2 の進化系が nvidia container toolkit です。詳しくはこちらのリンクにまとめられています。

https://github.com/NVIDIA/nvidia-docker より
目的
nvidia container tookit を使って、docker のコンテナ上で cuda(10.1) を動かします。また、opencv と pytorch もコンテナ上に入れます。
環境
- Ubuntu 18.04
- docker 19.03
- nvidia driver 450.36
手順
nvidia container toolkit をインストールする
公式通りに進めます。まずは、nvidia container toolkit のインストールです。
1 2 3 4 5 6 7 |
# Add the package repositories distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - 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-container-toolkit sudo systemctl restart docker |
cudaの動作確認
下のコマンドを打てば、自分の入れたい cuda が入っている仮想環境を動かすことができます。今回は、cuda10.1 & ubutu18.04 のイメージをもとに作成しました。こちらに cuda のイメージの一覧があるので、自分の作りたい環境に合わせて、コマンドの nvidia/cuda:10.1-base-ubuntu18.04 の箇所を入れ替えてください。また、gpus のところで使いたい gpus の個数を選べます。今回は gpu を全て使う all としていますが、例えば gpu を4個中2個使いたいときは –gpus 2 とすれば大丈夫です。
1 |
docker run --gpus all nvidia/cuda:10.1-base-ubuntu18.04 nvidia-smi |
pytorch のイメージを入手する
1 |
docker pull pytorch/pytorch |
コンテナを作成、起動する
ローカルのディレクトリを docker のディレクトリにマウントします。
1 |
docker run -it --gpus all -v ホストpcのディレクトリ:docker上のディレクトリ --shm-size 16G --name ml pytorch/pytorch |
-it でそのまま bash を起動します。–gpus で使う gpu の数を決められます。-v でホスト pc のディレクトリを docker のディレクトリにマウントできます。–shm-size はコンテナに割り当てるメモリのサイズです。–name はコンテナ名です。自由に決められます。pytorch/pytorch は pull してきた image の名前です。bash が起動して ls コマンドを打つと、ローカルのディレクトリがマウントされていることが確認できると思います。
opencvをインストール
1 |
pip install opencv-python |
ImportError: libgthread-2.0.so.0: cannot open shared object file: No such file or directory
import cv2
したときに上のようなエラーが出る場合は、下のコマンドを打てば大丈夫だと思います。
1 2 |
apt update apt-get install -y libglib2.0-0 libsm6 libxrender1 libxext6 |
まとめ
nvidia container toolkit を使えば簡単に、ローカルを汚さずに環境構築できました。
本記事は qiita にも投稿されております。
元記事:https://qiita.com/Hiroaki-K4/items/c1be8adba18b9f0b4cef