nvidia docker 使い方 - eiichiromomma/CVMLAB GitHub Wiki

(nvidia-docker) 使い方

作業メモ

イメージの選択

ここにある中から選ぶ。基本的にnvidia/cuda:8.0-cudnn6-develで良い。(HOST機のGPU次第。古いイメージが残っているとそのまま古いのが使われることもあるのでバージョン指定した方が良い。)

chainer用のコンテナ

mkdir  dockermount
sudo nvidia-docker run -it --name nv-chainer -v $HOME/dockermount/:/mnt nvidia/cuda:8.0-cudnn6-devel /bin/bash

といった感じでコンテナnv-chainerが作れる。$HOMEのdockermountフォルダがコンテナの/mntにマウントされる。 一旦コンテナを作ったら

sudo nvidia-docker start -i nv-chainer

で起動できる。

コンテナ内の作業

基本的にrootでの作業になる。気に食わない場合は

adduser USERNAME

でUSERNAMEユーザが作れるので、/etc/groupのsudoにその名前を加えておけばsudoも使えるようになる。 あとは

apt install ssh
service ssh start

でsshが起動するのでホスト側で

sudo nvidia-docker inspect nv-chainer

としてIPアドレスを調べるか、コンテナで

ifconfig

として調べる。USERNAMEでログインしたらsudo -i bashとでもすればrootになれる。

python2.xの場合

apt update
apt install aptitude python-dev python-numpy python-pip git libhdf5-dev
apt install libtiff5-dev libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk
apt install python-matplotlib imagemagick ssh vim pyqt5-dev libzmq3-dev python-scipy
pip install pillow h5py protobuf jupyter ipython==5.4.1
pip install chainer

python3の場合

apt update
apt install aptitude git libhdf5-dev
apt install libtiff5-dev libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev 
apt install python3-dev python3-numpy python3-pip python3-tk python3-matplotlib
apt install python3-pyqt5 libzmq3-dev python3-scipy
pip3 install pillow h5py protobuf jupyter ipython
pip3 install chainer

でだいたい使える状態になる。

docker commitで後付けマウント・ポート転送

現在のコンテナの状態をcommitでイメージ化して,それをコンテナにする。当然容量を食うので注意

nvidia-docker commit [-m "(説明)"] (ContainerID) (NewImageName)
nvidia-docker images

commitをやると結構時間がかかる。その後でimagesでNewImageNameが並ぶか確認し,成功してたらコンテナはdocker rmで消して良い(怖いなら後で)。あとは新しいイメージでrunする。

nvidia-docker run -it --name ub_pcl -p 2022:22 -v$HOME/dockermount:/mnt (NewImageName) /bin/bash