29
41

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DockerでpythonのTensorFlowとOpenCVの実行環境を構築する

Last updated at Posted at 2018-03-30

はじめに

PCをメイン機とサブ機で使い分けており,メイン機で書いたプログラムを出先でサブ機で確認したい時がよくあるんですが,サブ機にも同じ環境を作るのが大変.
特にPythonとかOpenCVってバージョンで動く動かないがあって結構面倒.
なので今回は,簡単にtensorflowとopencvのプログラムの実行環境を使えるようにdocker上で環境を構築しました.

(2018/11/5 追記)
DockerfileのOpenCVのインストールのオプションのWITH_IPP=ONだと,関連ファイルをダウンロードできずエラーとなるので修正しました.加えてPythonのインストールを公式のイメージを利用するように変更しました.

(2020/4/23 追記)
opencvをインストールしてビルドするのではなく,libopencv-devを利用するように変更しました.

Dockerfile

環境はUbuntuの安定版の16.04で固定.

まずPythonでOpenCVを扱うには,OpenCVのビルドが必須.そのために必要なgccやwgetもインストール.
これが結構時間がかかる.

pipでインストールするライブラリは,tensorflow以外にnumpyは最低あれば十分か?
必要になり次第追加して行く感じで.

./Dockerfile
FROM python:3.6

# opencv-devのインストール
RUN apt-get update -y && apt-get install -y libopencv-dev \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*
 
# TensorflowとOpencvのインストール
RUN pip3 install numpy tensorflow opencv-python

ENV APP_NAME tensor-docker
WORKDIR /home/$APP_NAME

CMD [ '/bin/bash'  ]

実行

dockerfileができたら以下のコマンドでビルド,実行.

# コンテナをビルド
$ docker build -t tensor-docker:0.1 .
# ~~~ いっぱい出力されるが省略 ~~~~
 ---> 45043a9b7a4c
Successfully built 45043a9b7a4c
Successfully tagged tensor-docker:0.1
# コンテナにログイン
$ docker run --rm -it tensor-docker:0.1 /bin/bash       
# Pythonのインストールチェック
$ root@55f3f91f7319:/home/tensor-docker# Python3 
Python 3.5.2 (default, Nov 23 2017, 16:37:01) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
# tensorflowとopencvがインストールされているか確認
>>> import tensorflow as tf  
>>> import cv2

コンテナ内の/home/tensor-dockerにログインできていて,ライブラリのインポートにエラーが出なければとりあえず環境構築は完了.

コンテナとローカルのフォルダの共有

実行環境はコンテナ内に立ち上がったが,コンテナ内でソースコードを編集する場合はviを使うしかない.
普段からIDEを使っている人にとってはviの編集はとても苦痛を伴うので,ローカルで編集→コンテナ内で実行といったサイクルを導入したい.
そのためにdockerのマウント機能で,コンテナのVolumeをローカル環境にマウントする.

docker run時に-vコマンドをつけて共有化したいディレクトリを指定することで,コンテナとローカルでディレクトリを共有可能になる.
実際に共有化できているのか確認してみる

# 今のファイル構造を確認
$ ls 
Dockerfile	img		util
# コンテナにログイン
$ docker run --rm -v `pwd`:/home/tensor-docker -it tensor-docker:0.1 /bin/bash
# コンテナ内でファイルを作成
$ root@55f3f91f7319:/home/tensor-docker# touch test.py
# 作成されていることを確認
$ root@55f3f91f7319:/home/tensor-docker# ls
Dockerfile  img  test.py  util
$ root@55f3f91f7319:/home/tensor-docker# exit
exit
# ログアウトしてローカルで先ほど作成したtest.pyが存在しているかを確認.
$ ls
Dockerfile	img		test.py		util

コンテナ内で作成したtest.pyをローカルでも確認することができた.

おわりに

ソースコードはこちら
https://github.com/sey323/docker-tensorflow

Docker便利!

29
41
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
41

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?