Help us understand the problem. What is going on with this article?

BluemixのDockerコンテナ環境にTensorFlowをインストールする

More than 3 years have passed since last update.

BluemixのDockerコンテナ環境にTensorFlowをインストールした時の手順を共有します。
GitHubのtensorflow/tensorflowリポジトリのDockerfileを、BluemixのDevOpsサービスのBUILD&DEPLOYを使ってビルド・デプロイします。
前提として、Bluemixアカウント(トライアルで可)、GitHubのアカウント、gitコマンド実行環境が必要です。

手順は以下のとおりです。

  1. BluemixのDockerコンテナ環境を初期設定する(レジストリー名前空間の設定)
  2. GitHubにリポジトリを作成する
  3. tensorflow/tensorflowリポジトリの必要部分を自分のリポジトリにpushする
  4. Bluemixにプロジェクトを作成する
  5. Bluemix DevOpsサービスのBUILD&DEPLOYを設定する
  6. Dockerコンテナをビルド・デプロイする

※この手順のうち"3"のステップは以下のいずれかの代替手段でスキップ可能です。その場合、gitコマンド実行環境は不要になります。

ただし、私のGitHubリポジトリはいずれ陳腐化して動かなくなると思いますので、"3"のステップで最新状態のオリジナルからコピーを取得することをお勧めします。


1. BluemixのDockerコンテナ環境を初期設定する(レジストリ名の登録)

Bluemixコンソールのカタログの画面で、IBM Containersを選択します。
スクリーンショット 2016-10-12 20.05.33.png

コンテナの作成の画面でコンテナイメージをひとつ選択します。
スクリーンショット 2016-10-12 20.12.29.png

レジストリー名前空間の設定を要求してくるので、適当に命名して保存します。
保存したらコンテナの作成の画面に戻ります。初期設定の作業はここまでです。
スクリーンショット 2016-10-12 20.15.43.png

2. GitHubにリポジトリを作成する

GitHubにログインし、リポジトリを新たに作成します。
スクリーンショット 2016-10-12 20.20.51.png

リポジトリ名を適当に命名してCreate repositoryをクリックします。
スクリーンショット 2016-10-12 20.23.26.png

リポジトリが出来上がると以下の画面が表示されます。リポジトリのURLを後でコピペして使用する(git remoteコマンドで指定する)ので、この画面はこのまま置いておきます。
スクリーンショット 2016-10-12 20.27.55.png

3. tensorflow/tensorflowリポジトリの必要部分を自分のリポジトリにpushする

本手順ではtensorflow/tensorflowに公開されているDockerfileをそのまま利用します。Dockerfileが置かれているサブディレクトリ以下だけが必要なのですが、まずはリポジトリ全体をgit cloneで入手します。
スクリーンショット 2016-10-12 20.34.55.png

terminalを開いて以下のコマンドを実行します。

$ git clone https://github.com/tensorflow/tensorflow.git

カレントディレクトリ下にtensorflowというディレクトリができます。ここからDockerfileのあるサブディレクトリに移動します。

$ cd tensorflow/tensorflow/tools/docker

dockerサブディレクトリに移動したら、ここでgitプロジェクトを作成して、commitします。

$ git init
$ git add .
$ git commit -m "initial commit" 

あらかじめGitHubに作成しておいたプロジェクトにこのgitプロジェクトをpushします。以下のコマンド例を参考にしてください。
git remoteコマンドの引数は、先に作成したGitHubのプロジェクトのURLをコピペして下さい。
git pushコマンドを実行するとGitHubのユーザーID、パスワードを要求してくるので、適宜応答して下さい。

$ git remote add origin https://github.com/takeyan/tensorflow_docker.git
$ git push -u origin master

4. Bluemixにプロジェクトを作成する

Bluemix DevOpsサービス(hub.jazz.net)にログインします。
スクリーンショット 2016-10-12 20.55.53.png

Bluemixにログインしたのと同じブラウザでDevOpsサービスにログインすると、セッション情報を勝手に引き継いでBluemixのユーザーIDでログインしてくれます。最初の一回だけ別名の設定を要求してくるので適当に命名します。
スクリーンショット 2016-10-12 21.04.12.png

スクリーンショット 2016-10-12 21.05.42.png

Start Coding in a new projectを選択して、Bluemixにプロジェクトを作成します(new projectのリンクをクリックします)。
スクリーンショット 2016-10-12 21.08.44.png

プロジェクト名を適当に命名し、Link to an existing GitHub repositoryを選択します。GitHubのユーザーID、パスワードを要求してきたら適宜応答します。
スクリーンショット 2016-10-12 21.13.00.png

リポジトリ選択のプルダウンメニューが現れるので、先にGitHubに作成してdockerサブディレクトリ以下をgit pushしておいたプロジェクト(ここではtensorflow_docker)を選択します。
スクリーンショット 2016-10-12 21.17.48.png

プロジェクトを選択すると更に下に選択肢が表示されますが、デフォルトのままで大丈夫です。一番下にCREATEボタンが現れるので、これをクリックします。ここのプロセスは若干時間がかかります。
スクリーンショット 2016-10-12 21.19.26.png

作成が完了すると以下の画面に切り替わります。
スクリーンショット 2016-10-12 21.24.29.png

5. Bluemix DevOpsサービスのBUILD&DEPLOYを設定する

DevOpsサービスの画面右上のBUILD&DEPLOYボタンをクリックします。
スクリーンショット 2016-10-13 9.51.57.png

「パイプラインにようこそ」の画面は邪魔なので、右上の△で閉じておきます。
「ステージの追加」で「ビルド」ステージ、「デプロイ」ステージの順に作成していきます。
スクリーンショット 2016-10-13 9.55.07.png

まずはビルドのステージです。「入力」の画面はデフォルトのままで大丈夫です。
スクリーンショット 2016-10-13 10.00.54.png

「ジョブ」の画面では、まずジョブ・タイプの選択で「ビルド」を選択します。
スクリーンショット 2016-10-13 10.03.54.png

ビルダー・タイプで「IBM Container Service」を選択します。
イメージ名は適当に命名します。(英小文字、数字の組み合わせが無難です)
他はデフォルトで大丈夫です。入力したら一番下の「保存」ボタンをクリックします。(以下の添付画面には「保存」ボタンは見えていません)
スクリーンショット 2016-10-13 10.09.52.png

次に、もう一度「ステージの追加」をクリックして、デプロイのステージを作成します。ここでも「入力」の画面はデフォルトのままで大丈夫です。
「ジョブ」の画面に移って、ジョブ・タイプの選択で今度は「デプロイ」を選択します。
スクリーンショット 2016-10-13 10.16.50.png

デプロイヤー・タイプでIBM Containers on Bluemixを選択します。
名前がデフォルトでmyApplicationNameになっているので、好みの名前に変更します。
ポート番号はデフォルトで80になっていますが、8888に変更します。
他はデフォルトのままで大丈夫です。
デプロイのステージでは環境プロパティーも設定するので、まだ「保存」はクリックしないで下さい。
スクリーンショット 2016-10-13 10.20.36.png

「環境プロパティー」の画面では、「プロパティーの追加」をクリックして、文字プロパティとして"CONTAINER_SIZE","medium"と入力します。この指定でコンテナに2GBのRAMを割り当てます。これがBluemixのトライアルアカウントのRAM割当の上限(※)です。
入力したら「保存」をクリックします。
※全てのコンテナのRAMサイズの合計が2GBに制限されますので、コンテナを複数作成したい場合はRAMサイズを控えめにして下さい。2GB RAMのコンテナをひとつ作成すると、それ以上コンテナを作成できなくなります。
CONTAINER_SIZEの選択肢とRAMサイズ(MB)を以下に列挙します。デフォルトはmicroです。

  • pico (64)
  • nano (128)
  • micro (256)
  • tiny (512)
  • small (1024)
  • medium (2048)
  • large (4096)
  • x-large (8192)
  • 2x-large (16384)

スクリーンショット 2016-10-13 10.28.05.png

6. Dockerコンテナをビルド・デプロイする

BUILD&DEPLOYの設定が完了すると、以下の画面の状態になっています。ここでビルドのステージの右上の▲をクリックしてビルドを開始します。ビルドが正常に終了すると、続いて自動的にデプロイが開始します。
スクリーンショット 2016-10-13 10.35.11.png

今回の実行では、ビルド開始からデプロイ完了まで13分程度かかりました(ビルドで9分20秒、デプロイで3分30秒)。ビルド環境を一から構築してそれからビルドを実行する、というようなことを毎回やっているので時間がかかるようです。
実行状況は「ログおよび履歴の表示」で確認することができます。

以下はデプロイまで完了した状態の画面です。このコンテナにアサインされたIPアドレスが確認できます。
スクリーンショット 2016-10-13 11.13.41.png

ダッシュボードを開くと、今デプロイしたコンテナがリストに表示されています。
スクリーンショット 2016-10-13 11.17.48.png

コンテナの詳細は以下のとおりです。
スクリーンショット 2016-10-13 11.20.24.png

最後に、コンテナにアサインされたIPアドレスのポート8888(ここでは http://169.46.159.57:8888 )にアクセスして、応答が返ることを確認します。
スクリーンショット 2016-10-13 11.25.44.png

無事TensorFlowをBluemixのDockerコンテナ環境にインストールできました。

以上です。

takeyan
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away