βが取れたbluemixのdockerを使ってみる(基本編)

33
BluemixDockerを使う S.Hanai 2015/7/3

Upload: shisei-hanai

Post on 08-Aug-2015

727 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: βが取れたBluemixのDockerを使ってみる(基本編)

BluemixでDockerを使う

S.Hanai 2015/7/3

Page 2: βが取れたBluemixのDockerを使ってみる(基本編)

おことわり 本資料の記載内容は、私が個人的に調べた内容であり、正式な日本IBMのテストやレビューを受けておりません。内容について、できる限り正確を期すよう努めてはおりますが、いかなる明示または暗黙の保証も責任も負いかねます。本資料の情報は、使用先の責任において使用されるべきものであることを、あらかじめご了承ください。

Page 3: βが取れたBluemixのDockerを使ってみる(基本編)

概要

Page 4: βが取れたBluemixのDockerを使ってみる(基本編)

献立

ß  βの取れたIBM Containersで、Dockerを使ってみる ß  Dockerの使用方法については基本的なところを理解していることが前提で書かれています

Page 5: βが取れたBluemixのDockerを使ってみる(基本編)

βの頃からの違い

ß  コマンドラインツールは、iceコマンドからcf tools(現在は、Cloud Foundry CLIと呼ばれている。以降、cf cliと省略)のプラグインに変更

ß  これまで通り、iceコマンドも使える ß  cf cliのプラグインだと、以下が改善されている

Þ  Pythonのインストールが不要 Þ  ネイティブのDockerコマンドが使える

Page 6: βが取れたBluemixのDockerを使ってみる(基本編)

コマンドラインツールの インストール

Page 7: βが取れたBluemixのDockerを使ってみる(基本編)

前提条件

ß  Docker 1.6以上 ß  cf cli 6.11.3以上 ß  IBM Containers Cloud Foundry plug-in

今回はクライアント側にUbuntu 14.04 64bitを使用します。 Mac/Windows環境の場合は、VirtualBoxを使用するか、BluemixのVMを使用し

てください。

Page 8: βが取れたBluemixのDockerを使ってみる(基本編)

Dockerのインストール

$ sudo –s # echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list # apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9 # apt-get update # apt-get install apparmor lxc-docker # usermod -a -G docker shanai

自分のユーザ名

グループ設定を反映させるため、一度ログオフしてログインし直します

Page 9: βが取れたBluemixのDockerを使ってみる(基本編)

cf cliをインストール

ß  念のため古いものを削除 $ sudo apt-get remove cf-cli

ß  https://github.com/cloudfoundry/cli/releases から、Debian 64bitを入手します(現在は、v6.12.0) wget -O cf_cli.deb https://cli.run.pivotal.io/stable?release=debian64&version=6.12.0

ß  インストール $ sudo dpkg –i cf_cli.deb $ cf –version cf version 6.12.0-8c65bbd-2015-06-30T00:10:31+00:00

Page 10: βが取れたBluemixのDockerを使ってみる(基本編)

IBM Containers Cloud Foundry plug-in のインストール

ß  以下を実行 $ cf install-plugin http://static-ice.ng.bluemix.net/ibm-containers-linux_x64

ß  確認 $ cf plugins Listing Installed Plugins... OK Plugin name Version Command name Command Help IBM-Containers 0.8.598 ic IBM-Containers Plugin

Page 11: βが取れたBluemixのDockerを使ってみる(基本編)

ログイン

Page 12: βが取れたBluemixのDockerを使ってみる(基本編)

CFのログイン

$ cf login API endpoint: https://api.ng.bluemix.net Email> [email protected] Password> Authenticating... OK Targeted org [email protected] ... API endpoint: https://api.ng.bluemix.net (API version: 2.27.0) User: [email protected] Org: [email protected] Space: dev

普段Bluemixへのログインに使用しているもの

Page 13: βが取れたBluemixのDockerを使ってみる(基本編)

レポジトリ名前空間の作成 $ cf ic namespace set 名前空間名

registry.ng.bluemix.net/自分が付けた名前空間名 がレポジトリのURLとなります。Bluemix内で一意な名前でなければなりません。

一度設定したら変更できません!!! 慎重に名前を選んでください

$ cf ic namespace set ruimo2 Command failed - Could not connect to IBM Containers Cannot assign namespace to org: ruimo2. Namespace is already set to: ruimo

$ cf ic namespace get ruimo

registry.ng.bluemix.net/自分が付けた名前空間名 がレポジトリのURLとなります。以降、ruimoの部分を自分の名前空間名に読み替えてください

Page 14: βが取れたBluemixのDockerを使ってみる(基本編)

IBM Containersへのログイン $ cf ic login ** Retrieving client certificates from IBM Containers ** Storing client certificates in /home/shanai/.ice/certs Successfully retrieved client certificates ** Authenticating with registry at registry.ng.bluemix.net Successfully authenticated with registry Your private Bluemix repository is registry.ng.bluemix.net/ruimo

このあとコマンドの実行の仕方が2つ表示される。環境変数を設定することで、dockerコマンドを直接使ってBluemixを操作するようにもできるが、Bluemix以外のDocker環境も使用していると、混乱しそうなので、

今回は環境変数の設定をしない方法を使う

Page 15: βが取れたBluemixのDockerを使ってみる(基本編)

コンテナの実行

Page 16: βが取れたBluemixのDockerを使ってみる(基本編)

試しにibmlibertyを起動

$ cf ic run -p 9080 registry.ng.bluemix.net/ibmliberty 859589e2-56b0-491a-b9e5-9bb9f0060ec9

cf ic runで起動 (ドキュメントによると、registry.ng.bluemix.net/の部分は省略できるはずだが、

2015/7/3時点では指定しないとエラーになる)

$ cf ic psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES859589e2-56b registry.ng.bluemix.net/ibmliberty:latest "" 5 seconds ago Running 9080/tcp sleepy_bardeen

cf ic psで確認

7/3時点、コンテナIDの表示がおかしい

ので注意 コンテナIDの表示に問題があるので、コンテナを対象としたコマンドは、こちらの名前を使用する(cf ic runの時に、--name xxxパラメータで好きなものを指

定できる。省略すると勝手に名前が付く)

Page 17: βが取れたBluemixのDockerを使ってみる(基本編)

public ipの割り当て

ß  2015/7/3時点、cf ic runで実行した時に、public ipが自動で割り当てられるケースと、割り当てられないケースがありました

ß  このため、cf ic runした後に、public ipが割り当たっているか確認して、割り当たっていなければ、割り当ててやります

ここにip addressが表示されれば、public ipは割り当てられている

$ cf ic ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 81e3fcf8-458 /ibmliberty:latest "" About an hour ago Running 134.168.1.155:9080->9080/tcp suspicious_lalande

Page 18: βが取れたBluemixのDockerを使ってみる(基本編)

public ipの割り当て

ß  もしも割り当たっていなければ、以下のようにして割り当てる

$ cf ic ip request Successfully obtained ip: "134.168.1.155"

ipアドレスを要求

$ cf ic ip bind 134.168.1.155 suspicious_lalande Successfully bound IP

バインドする ipアドレス コンテナ名

Page 19: βが取れたBluemixのDockerを使ってみる(基本編)

ブラウザで確認する

ß  割り当てられたpublic ipにアクセス(ポートは9080)

Page 20: βが取れたBluemixのDockerを使ってみる(基本編)

停止、削除

ß  確認が終わったら、コンテナを停止、削除する $ cf ic stop suspicious_lalande suspicious_lalande

$ cf ic ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 81e3fcf8-458 registry.ng.bluemix.net/ibmliberty:latest "" About an hour ago Shutdown 134.168.1.155:9080->9080/tcp suspicious_lalande

ここがShutdownになるまで待つ

$ cf ic rm suspicious_lalande suspicious_lalande

Page 21: βが取れたBluemixのDockerを使ってみる(基本編)

public imageを動かす

Page 22: βが取れたBluemixのDockerを使ってみる(基本編)

public imageを動かす

ß  2015/7/5時点、public imageを直接実行することはできない

$ cf ic run -d -p 80 registry.hub.docker.com/nginx Error response from daemon: Image not found Invalid IBM-Containers commands or docker commands. Available IBM Containers commands are {login, group, ip, route, volume, namespace, info} In addition, IBM Containers supports native docker cli passthrough, run cf ic help for more details

ß  このため、一度自分のprivateレポジトリにコピーしてから実行する

Page 23: βが取れたBluemixのDockerを使ってみる(基本編)

public imageをprivateレポジトリにコピーする

$ cf ic cpi nginx registry.ng.bluemix.net/ruimo/nginx

イメージのコピーコマンド

Docker公式レポジトリでの名前

コピー先のprivateレポジトリ

$ cf ic images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE registry.ng.bluemix.net/ruimo/nginx latest 691ae02b-147 2 minutes ago 0 B

コピーされた

Page 24: βが取れたBluemixのDockerを使ってみる(基本編)

実行 実行方法はこれまでと同一

$ cf ic run -d -p 80 registry.ng.bluemix.net/ruimo/nginx 37436d34-97f8-4420-b18e-4ba1e691c92d

$ cf ic ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 37436d34-97f registry.ng.bluemix.net/ruimo/nginx:latest "" 38 seconds ago Running 80/tcp focused_lovelace

public ipが割り当たっていないので、割り当てが必要

Page 25: βが取れたBluemixのDockerを使ってみる(基本編)

実行

$ cf ic ip list Successfully Connected Number of allocated public IP addresses: 1 IpAddress ContainerId 134.168.1.155

空きIP(空きが無い時は、cf ic ip requestで取得する)

$ cf ic ip bind 134.168.1.155 focused_lovelace Successfully bound IP

割り当て実行

cf ic psで表示されたコンテナ名

Page 26: βが取れたBluemixのDockerを使ってみる(基本編)

確認

今回はport 80を指定したので、IPアドレスのみを指定すればok

Page 27: βが取れたBluemixのDockerを使ってみる(基本編)

自分でDockerfileを作る場合

Page 28: βが取れたBluemixのDockerを使ってみる(基本編)

自分でDockerfileを作る

FROM ubuntu:14.04 MAINTAINER Shisei Hanai<[email protected]> RUN \ apt-get update && \ apt-get install -y nginx && \ echo 'It works' > /usr/share/nginx/html/index.html EXPOSE 80 CMD ["/usr/sbin/nginx", "-g", "daemon off;"]

nginxを使って静的コンテンツを公開するDockerfile

Page 29: βが取れたBluemixのDockerを使ってみる(基本編)

ビルド

$ docker build -t ruimo/mynginx .

Dockerfileが存在するディレクトリで実行

ローカルで確認

$ docker run -d -p 80:80 ruimo/mynginx

起動したらブラウザで確認 (GUIが無い時は、sshでポート転送するか、w3mなどで確認する) 左は w3m http://localhost を実

行した結果 w3mは、sudo apt-get install w3m

でインストールできる

Page 30: βが取れたBluemixのDockerを使ってみる(基本編)

Bluemixのprivateレポジトリにdocker imageをコピー

ß  ドキュメント上は、cf ic cpiでローカルのイメージをコピーできるように読めるが、2015/7/3時点では、Docker公式レポジトリにあるものしかコピーできない

ß  このため、再度ビルドを行う $ cf ic build -t ruimo/mynginx .

$ cf ic images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE registry.ng.bluemix.net/ruimo/mynginx latest 07c04479-39c 2 minutes ago 0 B

2015/7/3時点、ビルド中になぜか" ---> Running in 48d403e628cd"と表示されて実行が始まってしまうことがある。この場合は、Ctrl+Cで中断してリトライ

する。

Page 31: βが取れたBluemixのDockerを使ってみる(基本編)

Bluemix上で実行

$ cf ic run -p 80 registry.ng.bluemix.net/ruimo/mynginx 実行方法は、これまでと同じ

$ cf ic ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e7f69ca8-b50 registry.ng.bluemix.net/ruimo/mynginx:latest "" About a minute ago Running 80/tcp compassionate_almeida

$ cf ic ip list Successfully Connected Number of allocated public IP addresses: 1 IpAddress ContainerId 134.168.1.155

$ cf ic ip bind 134.168.1.155 compassionate_almeida Successfully bound IP

Page 32: βが取れたBluemixのDockerを使ってみる(基本編)

実行の確認 ブラウザで確認

Page 33: βが取れたBluemixのDockerを使ってみる(基本編)

今後の予定

ß  ボリューム機能 ß  コンテナ間リンク機能 ß  オートスケール機能