TensorFlow Dockerでの開発メモ(GPU)
最終更新日 2019/08/20
使用OS ver Ubuntu18.04
Proxy あり
開発環境起動
Jupyter notebookで開発
RUN
$ docker run --runtime=nvidia -it --rm -v $(pwd)/work:/tf/work -p 8888:8888 tensorflow/tensorflow:1.14.0-gpu-py3-jupyter
jupyter notebookへアクセス
tf/work/notebooksがHostなのでそこで新規作成する
(あとはjupyter上でうまくやって)
スクリプトで開発
RUN
$ docker run --runtime=nvidia -it --rm -v $(pwd)/work:/tf/work -p 8888:8888 tensorflow/tensorflow:1.14.0-gpu-py3-jupyter bash
tf/notebooksがHostとの共有ディレクトリなので、そこまで移動する
$ cd tf/work/pythonfiles
pythohスクリプトの実行
$ python xxxx.py
新規イメージを作る
元にするイメージを調査
tensorflow:1.14.0-gpu-py3-jupyterを元にイメージを作ろう
イメージを作る前に色々調べておく
OSを調べる
$ cat /etc/lsb-release
ubuntu18.04ベースであることがわかる
pythonのverを調べる
$ python --version
ちゃんとPython3ベースであることがわかる
aptで入っているものを調べる
$ dpkg -l
足りないものをDockerfileに書いていく
pipで入っているものを調べる
$ pip list
足りないものをDockerfileに書いていく
Dockerfileを作成
Dockerfileを新規作成
$ vim Dockerfile
下記を入力する
code: Dockerfile
FROM tensorflow/tensorflow:1.14.0-gpu-py3-jupyter
# aptインストール
RUN apt update && apt install -y \
libsm6\
libxext6\
libxrender-dev\
cmake\
ffmpeg \
libavcodec-dev \
libavformat-dev \
libavresample-dev \
libjpeg-dev \
libpng-dev \
libswscale-dev \
libtbb-dev \
libtiff-dev \
libv4l-dev \
libssl-dev \
cpio \
sudo && \
apt clean
# pipインストール
RUN pip3 install opencv-python opencv-contrib-python imageio scikit-image lxml pillow
WORKDIR /tf
イメージ作成
Dockerfileがあるディレクトリへ移動
$ cd ~/Dockerfiles
Dockerfileからイメージをビルド
$ sudo docker build -t tfcv .
tensorlowcvがimage名
最後の"."はDockerfileがカレントディレクトリにあるという意味
確認
$ Docker images
tensorflowcvが出てきたらOK
実行
homeに移動
$ cd ~
作成したイメージを起動
$ docker run --runtime=nvidia -it --rm -v $(pwd)/work:/tf/work -p 8888:8888 tfcv:latest
jupyter notebookへアクセス
tf/work/notebooksがHostなのでそこで新規作成する
(あとはjupyter上でうまくやって)
imageの消し方
全imageを調べる
$ docker image ls
こんな感じで出る
code:console
REPOSITORY TAG IMAGE ID CREATED SIZE
nvidia/cuda 9.0-runtime 741f48edc60d 4 weeks ago 902MB
nvidia/cuda 10.0-base-ubuntu18.04 a55b7fc6f6a0 5 weeks ago 135MB
hello-world latest fce289e99eb9 4 months ago 1.84kB
tensorflow/tensorflow 1.10.0-gpu-py3 0b4ceed1758b 9 months ago 3.08GB
imageを消す
コンテナが起動していない
下記で消せるはず
$ docker image rm <IMAGE ID>
コンテナが起動している
稼働しているコンテナのCONTAINER IDを調べる
$ docker ps -a
消したいImageがコンテナとして稼働していれば、コンテナを落とす
$ docker rm <CONTAINER ID>
image削除
$ docker image rm <IMAGE ID>
その他Tips
内部調査
Dockerにbashで入る
$ docker run --runtime=nvidia -it --rm -v $(pwd)/work:/tf/work -p 8888:8888 tensorflow/tensorflow:1.14.0-gpu-py3 bash
※最後にbashをつけるとtensorflow:1.14.0-gpu-py3-jupyterでもbashで入れる