ibm bluemix オンラインセミナー · 2015-02-16 · ibm containersサービスの使い方...
TRANSCRIPT
IBM Bluemixwww.bluemix.net
IBM Bluemix オンラインセミナー今からはじめるBluemixシリーズ
第3期 進化するBluemix第3回「コンテナー・サービス」
日本アイ・ビー・エムシステムズ・エンジニアリング株式会社
グロース・テクノロジー 橋本 裕樹
© 2015 IBM Corporation2
IBM Bluemixwww.bluemix.net
IBM Containersサービスの概要
IBM ContainersサービスはDockerベースのコンテナー・サービスです。Dockerの概要に触れた上でContainersサービスの概要を説明します。
2015年2月12日現在の試験リリースの内容を基に説明しています。
最新情報につきましては、Bluemixドキュメントをご確認ください。
https://www.ng.bluemix.net/docs/
© 2015 IBM Corporation3
IBM Bluemixwww.bluemix.net
Dockerとは(1/2)
Docker社が開発するコンテナー型の仮想化プラットフォーム
コンテナー型仮想化環境を管理するためのオープンソース・ソフトウェア。
Linuxコンテナー(LXC)技術を使用して実現されている。
仮想マシン型とコンテナー型の違い
ホストOS
ハイパーバイザー
仮想マシン
ゲストOS
仮想マシン
ゲストOS
ユーザー・プロセス
ユーザー・プロセス
…
ユーザー・プロセス
ユーザー・プロセス
…
ホストOS
ユーザー・プロセス
ユーザー・プロセス
…
ユーザー・プロセス
ユーザー・プロセス
…
コンテナー コンテナー
仮想マシン型 コンテナー型
• 1つのホストOS環境において、隔離された仮想的なハードウェア環境(仮想マシン)が複数作成される。
• ユーザー・プロセスは仮想マシンのゲストOS単位で隔離される。ゲストOSはホストOSと独立している。
• 1つのホストOS環境において、隔離された仮想的なOS環境(コンテナー)が複数作成される。
• ユーザー・プロセスはコンテナー単位で隔離される。カーネルはホストOSと共有している。
© 2015 IBM Corporation4
IBM Bluemixwww.bluemix.net
Dockerとは(2/2)
Dockerによるコンテナー型仮想化のメリット
軽量かつ高速に動作
ホストOSのカーネル下で動作するため、リソースのオーバーヘッドが非常に小さく、コンテナーの起動・停止含め、高速に動作する。
優れたポータビリティー
コンテナーのテンプレートとなるDockerイメージ(ディスク・イメージ)に優れたポータビリティーがある。
例えば、プロジェクト・メンバーへの開発環境の配布、クラウド間や環境間(開発環境/本番環境など)での移行が容易に行える。
Dockerレジストリー
Dockerイメージの保管や共有を行うためのレジストリー。
Dockerイメージ
Dockerコンテナーのベースとなるディスク・イメージ(テンプレート)。
Dockerコンテナー
Dockerイメージから作成され、実行できるコンテナー環境。
© 2015 IBM Corporation5
IBM Bluemixwww.bluemix.net
Containersサービスとは(1/2)
Bluemix環境でDockerコンテナーの実行環境を提供するサービス
Bluemix環境において、従来のCloudFoundryベースのアプリケーションに加え、Dockerベースのアプリケーションが使用可能になる。
既存アプリケーションをDockerイメージ化してBluemix環境へ持っていくなど、より柔軟な構成が可能になる。
組織内でDockerイメージを保管・共有するためのプライベートなDockerレジストリーも提供される。
Containers
ローカル環境 Bluemix / SoftLayer環境
プライベート
レジストリー
Containers
サービス
IBM Containers
Extension
Docker
実行環境
© 2015 IBM Corporation6
IBM Bluemixwww.bluemix.net
Containersサービスとは(2/2)
Bluemix環境におけるContainersサービスのメリット
Dockerインフラの運用管理が不要
Dockerコンテナーを実行するためのインフラを準備したり、運用管理する必要がなく、すぐに使い始めることができる。
Bluemixのコンポーザブルな環境
DockerベースのアプリケーションからもBluemixのサービスを利用することができるため、 Bluemixのコンポーザブルな環境を活用できる。
Dockerイメージのポータビリティー
Dockerが持つメリットを活かし、開発者のPC環境でテストしたイメージ、オンプレミス環境で使用しているイメージを、そのままBluemix環境へ持っていくことができる。
Containers
© 2015 IBM Corporation7
IBM Bluemixwww.bluemix.net
IBM Containersサービスの使い方
Node.jsベースのシンプルなアプリケーションをDocker化する作業を通じ、IBM Containersサービスの基本的な使い方を説明します。
2015年2月12日現在の試験リリースの内容を基に説明しています。
最新手順・詳細手順につきましては、Bluemixドキュメントをご確認ください。
https://www.ng.bluemix.net/docs/
© 2015 IBM Corporation8
IBM Bluemixwww.bluemix.net
Containersサービスの使い方
全体の流れ
0. 環境の事前準備(ローカル環境/Bluemix環境)※初回のみ
1. Dockerイメージのダウンロード
2. アプリケーションのDocker化
3. ローカル環境でのコンテナー実行
4. Dockerイメージのアップロード
5. Bluemix環境でのコンテナー実行
Bluemix環境の
事前準備
Dockerイメージの
ダウンロード
アプリケーションの
Docker化
ローカル環境での
コンテナー実行
Dockerイメージの
アップロード
Bluemix環境での
コンテナー実行
ローカル環境の
事前準備
ローカル環境 Bluemix / SoftLayer環境
プライベート
レジストリー
Containers
サービス
IBM Containers
Extension
Docker
実行環境
© 2015 IBM Corporation9
IBM Bluemixwww.bluemix.net
ローカル環境の事前準備
Bluemix環境の
事前準備
Dockerイメージの
ダウンロード
アプリケーションの
Docker化
ローカル環境での
コンテナー実行
Dockerイメージの
アップロード
Bluemix環境での
コンテナー実行
ローカル環境の
事前準備
ローカル環境 Bluemix / SoftLayer環境
プライベート
レジストリー
Containers
サービス
IBM Containers
Extension
Docker
実行環境
DockerおよびIBM Containers Extensionの導入
アプリケーションのDocker化(Dockerイメージの作成)を行うには、Linux環境で動作するDockerが必要となる。
Windows環境の場合は、VirtualBoxなど仮想マシンで用意すると良い。
Containersサービスの操作には、IBM Containers Extension (iceコマンド)を使用するため、ダウンロードして事前に導入する。
IBM Containers Extensionは、Python, Python pip, Pythonsetuptoolsに依存しているため、これらも導入が必要となる。
© 2015 IBM Corporation10
IBM Bluemixwww.bluemix.net
Bluemix環境の事前準備(1/3)
Containersサービスのインスタンス作成
初回のみ、Bluemixカタログの「統合」カテゴリーから「Containers」を選択し、インスタンスを作成する必要がある。 Bluemix環境の
事前準備
Dockerイメージの
ダウンロード
アプリケーションの
Docker化
ローカル環境での
コンテナー実行
Dockerイメージの
アップロード
Bluemix環境での
コンテナー実行
ローカル環境の
事前準備
© 2015 IBM Corporation11
IBM Bluemixwww.bluemix.net
Bluemix環境の事前準備(2/3)
プライベート・レジストリーのレジストリー名(名前空間)指定
作成したDockerイメージをプライベート・レジストリーへ登録する際、イメージ名に指定する。
registry-ice.ng.bluemix.net/<名前空間>/<イメージ名>
Bluemix環境の
事前準備
Dockerイメージの
ダウンロード
アプリケーションの
Docker化
ローカル環境での
コンテナー実行
Dockerイメージの
アップロード
Bluemix環境での
コンテナー実行
ローカル環境の
事前準備
レジストリー名
(名前空間)
© 2015 IBM Corporation12
IBM Bluemixwww.bluemix.net
Bluemix環境の事前準備(3/3)
Containersサービスの管理画面にてAPI認証キーの取得
GetStarted画面:レジストリーURL(名前空間)とAPI認証キー
Containers画面:作成済みコンテナーの一覧とステータス
Images画面:レジストリー内のDockerイメージの一覧
Bluemix環境の
事前準備
Dockerイメージの
ダウンロード
アプリケーションの
Docker化
ローカル環境での
コンテナー実行
Dockerイメージの
アップロード
Bluemix環境での
コンテナー実行
ローカル環境の
事前準備
プライベート
レジストリーURL
API認証キー
(iceコマンドの認証キー)
© 2015 IBM Corporation13
IBM Bluemixwww.bluemix.net
Dockerイメージのダウンロード
ベースにするDockerイメージのダウンロード
アプリケーションをDocker化する際にベースにするDockerイメージをレジストリーからダウンロードする。
Containersサービスでは、以下のイメージが標準提供されている。
Node.js組み込み済みイメージ
Libertyプロファイル組み込み済みイメージ
その他、Docker Hubなどからダウンロードしたイメージを使用することもできる。
Bluemix環境の
事前準備
Dockerイメージの
ダウンロード
アプリケーションの
Docker化
ローカル環境での
コンテナー実行
Dockerイメージの
アップロード
Bluemix環境での
コンテナー実行
ローカル環境の
事前準備
ローカル環境 Bluemix / SoftLayer環境
プライベート
レジストリー
Containers
サービス
IBM Containers
Extension
Docker
実行環境
© 2015 IBM Corporation14
IBM Bluemixwww.bluemix.net
デモ:Dockerイメージのダウンロード# ice login -k xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/root/.ice does not exist... attempting to create
/root/.ice/ice-cfg.ini does not exist ... using defaults
Target is container cloud. Invoking cloud service...
Authentication with container cloud service completed successfully
You can issue commands now to the container service
Proceeding to authenticate with the container cloud registry as well...
Login Succeeded
# ice imagesTarget is container cloud. Invoking cloud service...
Image Id Image Name Created
b679b48c-43d7-484e-b9b0-b2bf2baecc58 registry-ice.ng.bluemix.net/ibmliberty:latest Dec 1 20:36:38 2014
ac0c8eed-a201-4c22-8c6a-81691e4949e5 registry-ice.ng.bluemix.net/ibmnode:latest Dec 1 20:36:28 2014
# ice --local pull registry-ice.ng.bluemix.net/ibmnodeTarget is local host. Invoking docker with the given arguments...
Pulling repository registry-ice.ng.bluemix.net/ibmnode
<中略>
Status: Image is up to date for registry-ice.ng.bluemix.net/ibmnode:latest
# ice --local tag registry-ice.ng.bluemix.net/ibmnode ibmnodeTarget is local host. Invoking docker with the given arguments...
# ice --local imagesTarget is local host. Invoking docker with the given arguments...
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ibmnode latest 6485095cc0ef 10 weeks ago 425.4 MB
registry-ice.ng.bluemix.net/ibmnode 1.0.58 6485095cc0ef 10 weeks ago 425.4 MB
registry-ice.ng.bluemix.net/ibmnode latest 6485095cc0ef 10 weeks ago 425.4 MB
ice login -k <API認証キー>IBM Containersサービスへログイン。
ice imagesプライベート・レジストリー内のイメージをリストし、登録されているイメージを確認。
ice --local pull <イメージ名>Node.js組み込み済みイメージをプライベート・レジストリーからローカル環境へダウンロード。
ice --local tag <イメージ名> <新イメージ名>ダウンロードしたNode.js組み込み済みイメージに対し、ibmnodeという名前を付加。
ice --local imagesローカル環境のイメージをリストし、イメージが登録されたことを確認。
© 2015 IBM Corporation15
IBM Bluemixwww.bluemix.net
アプリケーションのDocker化(1/2)
Dockerfileの作成
Dockerでは、Dockerfileと呼ばれるテキスト・ファイルによってDockerイメージの作成を自動化できる。
1行1操作のステップ・バイ・ステップでDockerイメージの作成手順を記述する。
Dockerfileリファレンスhttps://docs.docker.com/reference/builder/
Bluemix環境の
事前準備
Dockerイメージの
ダウンロード
アプリケーションの
Docker化
ローカル環境での
コンテナー実行
Dockerイメージの
アップロード
Bluemix環境での
コンテナー実行
ローカル環境の
事前準備
イメージ内へアプリのコードをコピー
イメージ内へアプリの依存パッケージを導入
アプリが実行時に使用する環境変数を追加
アプリのリッスンするポート番号を登録
アプリの起動コマンドを登録
ベースにするDockerイメージを指定
CMD ["node", "/src/app.js"]
EXPOSE 80
ENV PORT 80
RUN cd /src; npm install
COPY . /src
FROM ibmnode
Dockerfileの例:
© 2015 IBM Corporation16
IBM Bluemixwww.bluemix.net
アプリケーションのDocker化(2/2)
Dockerイメージの自動作成
作成したDockerfileを使用し、ベースのDockerイメージに対してアプリケーションやアプリケーションの依存ファイルを組み込む。
FROMで指定したDockerイメージからコンテナーが作成され、以降の記述に従って順番にコンテナーへ変更が加えられる。コンテナーは最終的にDockerイメージとして保管される。
Bluemix環境の
事前準備
Dockerイメージの
ダウンロード
アプリケーションの
Docker化
ローカル環境での
コンテナー実行
Dockerイメージの
アップロード
Bluemix環境での
コンテナー実行
ローカル環境の
事前準備
ローカル環境 Bluemix / SoftLayer環境
プライベート
レジストリー
Containers
サービス
IBM Containers
Extension
Docker
実行環境
© 2015 IBM Corporation17
IBM Bluemixwww.bluemix.net
デモ:アプリケーションのDocker化# git clone https://hub.jazz.net/git/isebm/MemoApp1-NodejsCloning into 'MemoApp1-Nodejs'...
remote: Total 17 (delta 0), reused 17 (delta 0)
Unpacking objects: 100% (17/17), done.
# cd MemoApp1-Nodejs
# cat << EOF > Dockerfile> FROM ibmnode
> COPY . /src
> RUN cd /src; npm install
> ENV PORT 80
> EXPOSE 80
> CMD ["node", "/src/app.js"]
> EOF
# ice --local build -t memoapp .Target is local host. Invoking docker with the given arguments...
Sending build context to Docker daemon 89.6 kB
Sending build context to Docker daemon
<中略>
Successfully built 644bf6eda61b
# ice --local imagesTarget is local host. Invoking docker with the given arguments...
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
memoapp latest 644bf6eda61b 18 seconds ago 431.5 MB
registry-ice.ng.bluemix.net/ibmnode 1.0.58 6485095cc0ef 10 weeks ago 425.4 MB
registry-ice.ng.bluemix.net/ibmnode latest 6485095cc0ef 10 weeks ago 425.4 MB
ibmnode latest 6485095cc0ef 10 weeks ago 425.4 MB
Node.jsベースのサンプル・アプリケーションをDocker化するDockerfileを作成。
ice --local build -t <イメージ名> <Dockerfileパス>Dockerfileを使用してイメージを自動作成。
ice --local imagesローカル環境のイメージをリストし、イメージが作成されたことを確認。
Gitリポジトリー(IDS)からDocker化するサンプル・アプリケーションをダウンロード。
© 2015 IBM Corporation18
IBM Bluemixwww.bluemix.net
ローカル環境でのコンテナー実行
ローカル環境でのコンテナーの作成と実行
ローカル環境のDocker実行環境を使用し、作成したDockerイメージの動作を確認する。
Dockerイメージからコンテナーを作成して実行する。Bluemix環境の
事前準備
Dockerイメージの
ダウンロード
アプリケーションの
Docker化
ローカル環境での
コンテナー実行
Dockerイメージの
アップロード
Bluemix環境での
コンテナー実行
ローカル環境の
事前準備
ローカル環境 Bluemix / SoftLayer環境
プライベート
レジストリー
Containers
サービス
IBM Containers
Extension
Docker
実行環境
© 2015 IBM Corporation19
IBM Bluemixwww.bluemix.net
デモ:ローカル環境でのコンテナー実行# ice --local run --name MemoApp -d -p 80:80 memoappTarget is local host. Invoking docker with the given arguments...
8e7314f822b12ee4c2efa244eba1208b5f3ed6d4f2fd3cd42a81ce47c177b422
# ice --local ps -aTarget is local host. Invoking docker with the given arguments...
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8e7314f822b1 memoapp:latest "node /src/app.js" 25 seconds ago Up 24 seconds 22/tcp, 0.0.0.0:80->80/tcp MemoApp
# ice --local stop MemoAppTarget is local host. Invoking docker with the given arguments...
MemoApp
# ice --local rm MemoAppTarget is local host. Invoking docker with the given arguments...
MemoApp
ice --local stop <コンテナー名>アプリケーションの動作確認後、ローカル環境のコンテナーを停止。
ice --local run --name <コンテナー名> -d–p <ポート番号>:<ポート番号> <イメージ名>ローカル環境でイメージからコンテナーを作成&実行。
ice --local ps -aローカル環境のコンテナーの実行ステータスを確認。コンテナーが作成され、実行されていることを確認。
ice --local rm <コンテナー名>不要となったローカル環境のコンテナーを削除。
© 2015 IBM Corporation20
IBM Bluemixwww.bluemix.net
Dockerイメージのアップロード
Dockerイメージのアップロード
作成したDockerイメージをプライベート・レジストリーへアップロードする。
アップロードするDockerイメージには、以下の形式の名前を付ける必要がある。
registry-ice.ng.bluemix.net/<名前空間>/<イメージ名>
Bluemix環境の
事前準備
Dockerイメージの
ダウンロード
アプリケーションの
Docker化
ローカル環境での
コンテナー実行
Dockerイメージの
アップロード
Bluemix環境での
コンテナー実行
ローカル環境の
事前準備
ローカル環境 Bluemix / SoftLayer環境
プライベート
レジストリー
Containers
サービス
IBM Containers
Extension
Docker
実行環境
© 2015 IBM Corporation21
IBM Bluemixwww.bluemix.net
デモ:Dockerイメージのアップロード# ice --local tag memoapp registry-ice.ng.bluemix.net/demo/memoappTarget is local host. Invoking docker with the given arguments...
# ice --local push registry-ice.ng.bluemix.net/demo/memoappTarget is local host. Invoking docker with the given arguments...
The push refers to a repository [registry-ice.ng.bluemix.net/demo/memoapp] (len: 1)
Sending image list
Pushing repository registry-ice.ng.bluemix.net/demo/memoapp (1 tags)
<中略>
Pushing tag for rev [644bf6eda61b] on {https://registry-ice.ng.bluemix.net/v1/repositories/demo/memoapp/tags/latest}
# ice imagesTarget is container cloud. Invoking cloud service...
Image Id Image Name Created
dd5ba8c8-a01a-45ed-84db-2f2d1c5e059c registry-ice.ng.bluemix.net/demo/memoapp:latest Feb 12 01:26:13 2015
b679b48c-43d7-484e-b9b0-b2bf2baecc58 registry-ice.ng.bluemix.net/ibmliberty:latest Dec 1 20:36:38 2014
ac0c8eed-a201-4c22-8c6a-81691e4949e5 registry-ice.ng.bluemix.net/ibmnode:latest Dec 1 20:36:28 2014
ice imagesプライベート・レジストリー内のイメージをリストし、イメージが登録されたことを確認
ice --local tag <イメージ名> <新イメージ名>作成したイメージに対し、プライベート・レジストリー用の名前を付加。
ice --local push <イメージ名>作成したイメージをローカル環境からプライベート・レジストリーへアップロード。
© 2015 IBM Corporation22
IBM Bluemixwww.bluemix.net
Bluemix環境でのコンテナー実行
Bluemix環境でのコンテナーの作成と実行
Bluemix環境のDocker実行環境を使用し、作成したDockerイメージの動作を確認する。
Dockerイメージからコンテナーを作成して実行する。
インターネットからアプリケーションへアクセスするには、パブリックIPアドレスを割り当てる必要がある。
コマンドでパブリックIPアドレスを取得し、コンテナーへバインドする。
Bluemix環境の
事前準備
Dockerイメージの
ダウンロード
アプリケーションの
Docker化
ローカル環境での
コンテナー実行
Dockerイメージの
アップロード
Bluemix環境での
コンテナー実行
ローカル環境の
事前準備
ローカル環境 Bluemix / SoftLayer環境
プライベート
レジストリー
Containers
サービス
IBM Containers
Extension
Docker
実行環境
© 2015 IBM Corporation23
IBM Bluemixwww.bluemix.net
デモ:Bluemix環境でのコンテナー実行# ice run --name MemoApp registry-ice.ng.bluemix.net/demo/memoappTarget is container cloud. Invoking cloud service...
beeb4df2-887f-48ac-95ab-251762323a3f
# ice ps -aTarget is container cloud. Invoking cloud service...
Container Id Name Image Id Command Created Status Private IP Public IP
beeb4df2-887f-48ac MemoApp dd5ba8c8-a01a-45ed Feb 12 01:28 Running 172.16.45.34
-95ab-251762323a3f -84db-2f2d1c5e059c
# ice ip requestTarget is container cloud. Invoking cloud service...
Successfully obtained ip: “xxx.xxx.xxx.xxx“
# ice ip bind xxx.xxx.xxx.xxx MemoAppTarget is container cloud. Invoking cloud service...
Successfully bound ip
# ice stop MemoAppTarget is container cloud. Invoking cloud service...
Stopped container successfully
# ice rm MemoAppTarget is container cloud. Invoking cloud service...
Removed container successfully
ice ip requestBluemix環境のパブリックIPアドレスを取得。
ice ip bind <IPアドレス> <コンテナー名>Bluemix環境のパブリックIPアドレスをコンテナーへ割り当て。
ice stop <コンテナー名>アプリケーションの動作確認後、Bluemix環境のコンテナーを停止。
ice rm <コンテナー名>不要となったBluemix環境のコンテナーを削除。
ice run --name <コンテナー名> <イメージ名>Bluemix環境でイメージからコンテナーを作成&実行。
ice ps -aBluemix環境のコンテナーの実行ステータスを確認。コンテナーが作成され、実行されていることを確認。
© 2015 IBM Corporation24
IBM Bluemixwww.bluemix.net
まとめ
© 2015 IBM Corporation25
IBM Bluemixwww.bluemix.net
まとめ
Containersサービスとは、Bluemix環境でDockerコンテナーの実行環境を提供するサービス。
Dockerコンテナーを実行するためのインフラを準備したり、運用管理する必要がなく、すぐに使い始めることができる。
DockerベースのアプリケーションからもBluemixのサービスが利用でき、Bluemixのコンポーザブルな環境を活用できる。
既存アプリケーションをDockerイメージ化してBluemix環境へ持っていくなど、より柔軟な構成が可能になる。
組織内でDockerイメージを保管・共有するためのプライベートなDockerレジストリーも提供される。
© 2015 IBM Corporation26
IBM Bluemixwww.bluemix.net
Bluemixを試す Bluemixフリートライアルibm.biz/BMtrial
Bluemixについてもっと学びたい Bluemix Webinaribm.biz/BMwebinar
Bluemix技術情報http://www.ibm.com/developerworks/jp/bluemix/
Bluemixご紹介http://www.ibm.com/software/jp/info/bluemix/
© 2015 IBM Corporation27
IBM Bluemixwww.bluemix.net