Dockerを使ってサンプルプログラムを動作させよう
Dockerを使ったサービスのご提供は終了致しました。(2021年8月30日)
本日(2020年10月4日)Docker イメージの配布を Docker Hub にて開始しました。ホスト OS は Ubuntu です。
ここではDockerとはなにか、Dockerの基本的な操作方法、Docker内で配布されたサンプルプログラムを動作させるまでを解説いたします。
目次
Dockerとはなにか
既にご存じの方はこちらを読み飛ばして頂いて結構です。
聞いたことはあるけど使ったことはない…、という方はこのままお付き合いください。
DockerとはDocker社が作成した軽量で可搬性のある仮想環境を作成する仕組みです。
これまではバーチャルマシンなど大掛かりな仮想環境を作っていたものを、ホストOSとカーネルを共通化することで軽量・コンパクトなコンテナと呼ばれる仮想環境を作り出すことが出来ます。
開発環境から本番環境まで全てDocker内で完結できることから多くの企業で採用されています。
Dockerのインストール
Ubuntuへインストールする場合
これからずっとDockerを社内で使い続ける場合はリポジトリからインストールしてください。作業は煩雑ですがセキュリティアップデートがシステムに準じて行われますのでセキュアです。こちらのページに導入手順をまとめてあります。
逆にちょっと使ってみるだけだよという場合は公式ダウンロードサイトからdebファイルをダウンロードしてインストールしましょう。公式ダウンロードサイトをクリックしてLinux用をインストールしてください。
Windows10の場合
上記サイトからWindows用インストーラをダウンロードしてください。
Windows固有の情報については以下の公式チュートリアルをご参照ください。
初期確認
いくつかターミナル(パワーシェル)からコマンドをうって動作を確認しましょう。
$ docker
$ docker
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
Options:
--config string Location of client config files (default "/home/****/.docker")
-c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default
context set with "docker context use")
-D, --debug Enable debug mode
-H, --host list Daemon socket(s) to connect to
-l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
--tls Use TLS; implied by --tlsverify
--tlscacert string Trust certs signed only by this CA (default "/home/terms/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default "/h
以下略
上のようになれば次のステップに進みます。
Docker イメージの取得
リポジトリからイメージを取得します。下のコードは長いのでそのままコピペでも良いと思います。
$ docker pull tokaikaoninsho/face_recognition_env
このイメージは Ubuntu をベースに開発環境を構築してあります。具体的には Python3 実行環境と Face01_Imager を動作させるためのライブラリ一式が入っています。
ダウンロードには時間がかかります。
ダウンロードが終わったらイメージが取得できているか確認してみましょう。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tokaikaoninsho/face_recognition_env latest 9b6fa2144f99 7 months ago 1.75GB
念の為今動いているコンテナがあるかどうか見てみましょう。(今の段階ではまだコンテナは動いていないはずです)
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
まだ何も動いていないことが確認できました。
Face01 Imager を動作させる
pull して頂いたイメージからコンテナを起動させます。この時同時にダウンロードしたディレクトリをマウントしてください。具体的には $ docker images とした時に以下のようになったことを確認した後に $ docker run をオプション付きで実行します。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tokaikaoninsho/face_recognition_env latest 9b6fa2144f99 4 hours ago 1.75GB
上のように確認が終わったら次のようなコードを打ちます。
$ docker run [イメージファイル]
docker runコマンドはイメージをビルドしてスタートさせる2つの機能を持っています。
更に-vオプションをつけることで今使っているパソコンに接続してデータを読み書きできるように指定します。
-itオプションはサンプルプログラムをホストのターミナルで実行できるようにしています。よくわからない場合はこちらの解説記事が分かりやすいです。
では下のように打ち込んでください。
## イメージからコンテナを作成してホストへマウントする
$ docker run -v /[ダウンロードしたFACE01のフォルダー]/:/home/app -it tokaikaoninsho/face_recognition_env /bin/bash
[ダウンロードしたFACE01のフォルダー]
上記の部分はホスト OS 側の Face01_Imager の実行ファイル・フォルダがあるディレクトリを指定してください。 Docker 側は /home/app/ を作成していてそこにマウントするようにしています。
上記が出来ましたら以下のように操作しながら動作を確認していきましょう。
## コンテナ内のフォルダへ移動する
root@fc707ed9c78f:/# cd /home/app/
## フォルダ内部の確認
root@fc707ed9c78f:/home/app# ls
pycache check_images dist face01_imager_115.py noFace npKnown.txt output pictures_of_people_i_know pytransform recognated test_script_for_imager115.py
## Face01 Imagerを起動
root@fc707ed9c78f:/home/app# python3 face01_imager_115.py
/home/app/check_images/
name 石川遼 date 2020,10,04,22,07,31,263093 face_distance 0.13
name 茂木健一郎 date 2020,10,04,22,07,31,392547 face_distance 0.12
name 永尾まりや date 2020,10,04,22,07,31,506078 face_distance 0.15
name 花田優一 date 2020,10,04,22,07,31,615693 face_distance 0.11
name 有賀さつき date 2020,10,04,22,07,31,726761 face_distance 0.15
344 Error: 小池知事kmirror.jpg に顔を検出できませんでした。 mode を hog から cnn にして再試行…
349 Msg: mode = 'cnn' で顔探索中…
361 Msg: 顔を検出しました mode='hog' に戻します
…OK
(以後略)
/home/app/ ディレクトリに移動し $ python3 face01_imager_115.py を起動しています。
Face01_Imager が動作していることが確認できます。
エラーが出たら
もし以下のようなエラーが出た場合、サンプルプログラムの使用期限が過ぎています。サンプルプログラムは予め設定された使用期限までしか使用することは出来ません。使用期限を過ぎて使用したい場合はご連絡ください。
$ python3 ./test_script_for_imager115.py
Start test_script
Traceback (most recent call last):
(中略)
RuntimeError: License is expired
まとめ
Docker を使うと端末に何行か打ち込むだけで環境設定が完了、プログラムが動作確認できます。また出来上がったコンテナやイメージを削除するのも簡単です。
更にデプロイ時に様々なアプリケーションが相乗りしている PC に Docker をインストールするだけで互いに干渉しないシステムを構築することができます。
今回配布する Docker イメージは Face01_Imager 用です。
Face01_Graphics に対応させた Docker イメージはまだ作成できておりません。作成でき次第、本ブログで公開させていただきます。
以上です。最後までお読みいただきありがとうございました。