Upload
nobuchika-kamon
View
1.476
Download
2
Embed Size (px)
Citation preview
April 24 , 2015
AP Communications Co., Ltd. System Infrastructure Engineering Div.
Nobuchika Kamon
1
Question.
1.どちらかというとプログラマ的な仕事である。
2.どちらかというとサーバエンジニア的な仕事である。
3.あるいはネットワークエンジニアかデザイナなどの仕事である。
2
1. Dockerは普通に触ったことがある。
2. Dockerは触ったことがあんまりない。(ちょっとある)
3. 全くない。
Question.
3
1. いままで8a1に参加したことある。
2. 無い。
Question.
4
ご協力ありがとうございました。 進行の参考にさせていただきます。
Question.
5
今回の講座は、タイトルどおりに初心者向けです。 中上級者の方がいらっしゃった場合、つまらないという可能性が 大いにありますのでその点はご了承くださいませ。 資料は後日Slideshareにアップ予定。 質疑応答は懇親会の時にでもざっくばらんに声かけてください。 4649 !!
Question.
6
Who?
嘉門 延親(KAMON Nobuchika) ・ 独立系SIer歴 13年くらい(その前にも数社) ・ 基本的にインフラ屋として働いてます。 ・ Googleストリートビュー被写体経験あり
7
------------------< 薀 蓄 >------------------ 1. Dockerってどんな技術?という概要 2. Dockerオーケストレーションツールの紹介 3. 本番環境での実装例のご紹介 ------------------< 休 憩 >------------------ ※ないかも?EC2のアカウント情報を配ります。 ------------------< 手 技 >------------------ Dockerしてみるハンズオン イメージ的にはだいたいトータルで1H~1.5Hくらいの予定です。 質疑は懇親会でやりましょー。適当に声かけてください。
Agenda.
8
------------------< 薀 蓄 >------------------ 1. Dockerってどんな技術?という概要 2. Dockerオーケストレーションツールの紹介 3. 本番環境での実装例のご紹介 ------------------< 休 憩 >------------------ ※ないかも?EC2のアカウント情報を配ります。 ------------------< 手 技 >------------------ Dockerしてみるハンズオン イメージ的にはだいたいトータルで1H~1.5Hくらいの予定です。 質疑は懇親会でやりましょー。適当に声かけてください。
Agenda.
9
What is Docker ?
Dockerの概要
10
What is Docker ?
元々は、dotCloudという会社(クラウドサービス)が、自社のPaaS環境を 実現する為につくったツールでした。 しかし今は、dotCloudは売却して、Docker,Inc になりました。
「Docker」 Linux上で動作するコンテナ型の仮想化ソフトウェア
11
ここは本日限り
What is Docker ?
・AWS、Dockerコンテナ管理サービス「Amazon EC2 Container Service」などをリリース 2014/11/16 ・正式版「Docker 1.0」がリリース――Microsoft AzureもDocker利用を支援 2014/6/9 ・ Docker 向けCloud Foundry BOSHがリリース 2014/6/11 ・ Red HatがDocker中心のEnterprise LinuxディストリビューションAtomic Hostをリリース 2015/3/6 などなど・・・ ※現在の最新版は1.6です。
2014年に1.0がリリースし、大きく知名度向上&大ブレイク。
12
What is Docker ?
○ Namespaces ○ cgroups ○ Storage ○ Networking ○ Security このあたりの説明は後ほど。
基本的な機能はLinuxが元々持ってる機能を利用してます。
13
What is Docker ?
Virtual Machines
Vs
D o c k e r
14
What is Docker ?
Server
HOST OS
Hypervisor
GuestOS GuestOS
Bins/Libs
App A
Bins/Libs
App B
Virtual Machines
それぞれのアプリを動かすための実行環境として、わざわざ別のゲストOSを用意。
15
What is Docker ?
Server
HOST OS
Hypervisor
GuestOS GuestOS
Bins/Libs
App A
Bins/Libs
App B
Virtual Machines
ゲストOSだけではなく、 HyperVisorという謎の物体もある
16
What is Docker ?
Server
HOST OS
Docker Engine
Bins/Libs
App A
Bins/Libs
App B
Docker
ゲストOSいらず。 いきなりコンテナとしてアプリ実行環境をポコポコ作れる。 ハイパーバイザーもいらない。
17
What is Docker ?
VirtualMachine vs Docker
Virtual Machine Docker
起動 数分は必要 1秒くらい
メモリ OS本体分の確保が必要 プロセスの分だけ
OSの自由度 OSそのものなので自由にできる 母艦ホストに依存
ディスク容量 OS分は必要 コンテナで使う分だけ
18
What is Docker ?
身近な例に例えると….
19
What is Docker ?
ひとつの土地にひとつのOSが入っている。一軒家構成。 = 従来の物理構成
Traditional Architecture
20
What is Docker ?
それぞれの部屋に風呂とかキッチンは必要だけど、 敷地はひとつの “マンション” で良くね?
= 仮想化環境
Virtual Architecture
21
What is Docker ?
つーか、玄関も風呂もキッチンも全部ひとつで良いよね。 要は最低限の自分の環境があればいいわ。
ファシリティ共通の ”シェアハウス” でいいよね。 = Docker 環境
22
What is Docker ?
自由度: 一軒家 > マンション > シェアハウス
コストの高さ: 一軒家 > マンション > シェアハウス
引っ越しの大変さ: 一軒家 > マンション > シェアハウス
23
What is Docker ?
何がベストかは用途次第ではありますが、 軽くて独立したアプリ実行環境を作れるというのがDockerの強みです。
24
What is Docker ?
またDockerfileによる “Infrastructure as a code” の実現や、 ポータビリティの高さもその強みです。
25
What is Docker ?
Dockerfileの例 FROM centos:centos6 MAINTAINER KAMONNOBUCHIKA@APC RUN yum update -y RUN yum install -y mysql-server RUN yum install -y mysql-devel RUN chown -R mysql:mysql /var/lib/mysql EXPOSE 3306 CMD ["/usr/bin/mysqld_safe"]
# vi Dockerfile
CentOS6のイメージ上に、 Yum updateして、 Mysql-serverとdevelいれて ディレクトリ権限変えて 3306あけて 起動するっていうように書いておく
26
What is Docker ?
Dockerfileの例
# docker build -t kamon/mysql:0.1 .
Buildオプションで、イメージを作る。 ―t でイメージ名 kamon/mysql、タグ名を0.1とする。 んで、カレントディレクトリにあるDockerfileを指定。
27
What is Docker ?
要するに、書いておくとその通りに再現される イメージのレシピ的なものを持っておけますよと。
そんな話です。
28
What is Docker ?
なおイメージ自体もExportして、 他の環境に持ってくことができます。
DockerイメージはVMを移動するより
はるかに軽量ですが、 データ以外はファイルにして都度実行の
方が当然軽いです。でも時間はかかるけど。
29
What is Docker ?
アーキテクチャについての説明
30
What is Docker ?
これからご説明するものは、 Linux自体に実装されている機能です。
個々の詳細は割愛しますが、
ふーんこういうふうなもんなのねくらいに 見ていただければと思います。
31
What is Docker ?
○ Namespaces ○ cgroups ○ Storage ○ Networking ○ Security
32
What is Docker ?
○ Namespaces ○ cgroups ○ Storage ○ Networking ○ Security
33
What is Docker ?
Server
HOST OS
Docker Engine
Bins/Libs
App A
Bins/Libs
App B
Namespaces -プロセスの隔離-
× それぞれのコンテナ間は隔離されている。
34
What is Docker ?
Namespaces -プロセスの隔離-
それぞれの超概要: ○ PID → それぞれのコンテナで独立したPID ○ MNT → 各空間で行ったマウント操作が他に影響しない ○ IPC → プロセス間通信(IPC)を独立させることができる ○ UTS → ホスト名、ドメイン名をそれぞれ持つことができる ○ NET → IPアドレス、ルーティングテーブルとかを独立 ○ USER → いまのDockerでは使えない まぁ、あんまり意識しないですけど、実際。
35
What is Docker ?
○ Namespaces ○ cgroups ○ Storage ○ Networking ○ Security
36
What is Docker ?
例えば、 CPUやメモリの使用量を制限することができます。 docker run -c 256 -m 512m hoge /bin/bash
-c :CPUの相対的な資料量 -m : Memory使用上限
37
What is Docker ?
○ Namespaces ○ cgroups ○ Storage ○ Networking ○ Security
38
What is Docker ?
UNION Filesystem. (aufs,btrfs,devicemapper,vfs,overlayfs)
https://docs.docker.com/terms/layer/
39
What is Docker ?
UNION Filesystem. (aufs,btrfs,devicemapper,vfs,overlayfs)
Write
https://docs.docker.com/terms/layer/
40
What is Docker ?
UNION Filesystem. (aufs,btrfs,devicemapper,vfs,overlayfs)
Read
https://docs.docker.com/terms/layer/
41
What is Docker ?
○ Namespaces ○ cgroups ○ Storage ○ Networking ○ Security
42
What is Docker ?
仮想ブリッジ iptables SElinux Veth など などが使われてます(詳細はハンズオンにて) まぁこんなんがありますよ、と。
43
What is Docker ?
ウンチクが長くてすいません。
44
自主規制
What is Docker ?
も・・・もう少しだけ。。
45
What is Docker ?
docker hub
46
What is Docker ?
ざっくりいうと、インストールして使うソフトウェア としてのDockerは “Docker Engine”。
それとは別にイメージを共有するためのレポジ
トリとして “Docker hub” があります。
47
What is Docker ?
docker hub (official Repo)
※ March 7, 2015 48
What is Docker ?
docker hub (Price)
※ March 7 , 2015 49
What is Docker ?
ここまでのまとめ。 ○ Dockerの良いところ -- VM技術との比較とDockerfile など ○ 使われてる要素技術 -- コンテナ隔離、リソース、FS など ○ Docker hubについて
50
------------------< 薀 蓄 >------------------ 1. Dockerってどんな技術?という概要 2. Dockerのオーケストレーションツールの紹介 3. 本番環境での実装例のご紹介 ------------------< 休 憩 >------------------ ※ないかも?EC2のアカウント情報を配ります。 ------------------< 手 技 >------------------ Dockerしてみるハンズオン イメージ的にはだいたいトータルで1H~1.5Hくらいの予定です。 質疑は懇親会でやりましょー。適当に声かけてください。
Agenda.
51
Orchestration.
Dockerの課題
Server
HOST OS
Docker Engine
Bins/Libs
App A ひとつのサーバにひとつのコンテナ。 特に問題ない。
52
Orchestration.
Dockerの課題
Server
HOST OS
Docker Engine
Bins/Libs
App A ひとつのコンテナに複数のアプリケーション。 これは基本的にイケてない。 # Docker非推奨。 ひとつのアプリケーションを動かすべき。
App B
53
Orchestration.
Dockerの課題
Server
HOST OS
Docker Engine
Bins/Libs
App A
Bins/Libs
App B まぁ、こうなる。
54
Orchestration.
Dockerの課題
Server
HOST OS
Docker Engine
Bins/Libs
PHP
Bins/Libs
MySQL APサーバとDBサーバならこんな感じ。 単一サーバの中であれば、linkの機能として実現することができる。
55
Orchestration.
Dockerの課題
○ 複数ホストをまたがって管理するときには? ○ 単一サーバでもコンテナ多くなったらカオスじゃね? ○ Dockerのホスト自体を管理する手段ってねーの? ○ ホスト間のシームレスなマイグレーションってどーすんの? などなど。 このあたりが、現時点でのDockerの課題のひとつです。 現時点で決定的なツール等はありませんが、徐々に充実してきています。 今回はいくつかそれらをご紹介します。
56
Orchestration.
fig -------------------------------------------------------------------
【 fig.yml 】 web:
image: kamon/apache:0.1
links:
- db
ports:
- "80:80“
db:
image: kamon/mysql:0.1
volumes:
- /var/lib/mysql:/var/lib/mysql
------------------------------------------------------------------- fig up –d : fig.yml に書いた通りにイメージをアップしてくれる。
単一ホストの簡易的な管理
57
Replication Controller
Orchestration.
kubernetes Google謹製 複数ホストに対する高機能Docker管理ツール。 k8s とか略されたりしている。 Docker、MS、Redhat 他各社が支持を表明している。 基本的にはマルチホストNWを実現する flannelと一緒に使う。
Container
Container
Label
Replication Controller
Container
Container
Label
Container
Pod (Labelはpodの名前)
service 設定したpodにtrafficをRRで割り振ったりする
指定した数だけpodを立ち上げたりする
58
Orchestration.
Docker Machine (Bata)
AWS EC2、OpenStack、VMware vSphere、 MS Azure、DegitalOcianなど 様々な環境に一発でホスト環境を作って管理。
Docker Swarm (Bata)
複数のDocker Engineをひとつに束ねたように 見せるクラスタリングツール。
Docker Compose 複数のDockerコンテナで構成されるアプリケーション をデプロイするオーケストレーションツール。 つーかfigである。
59
Orchestration.
60 https://github.com/weaveworks/weave
Weave
ホストにdockerイメージを落として、 コンテナとして起動するとマルチホスト間のネットワーク をトンネル作って作ってくれるツール。 (超シンプル)
Orchestration.
Dockerの課題
徐々にプレイヤーが出そろってきた感じがありますが、まだβだったりして バギーだったり機能不足だったりしています。個人的にはweave推し。 一方でコミュニティも活発だし、おそらく今年中には大きく進展するかも? また柔軟なマルチホスト間NWも実現できるSocketPlaneという ソリューションをDockerが買収したりもしております。 これからも要注目!
61
------------------< 薀 蓄 >------------------ 1. Dockerってどんな技術?という概要 2. Dockerのオーケストレーションツールの紹介 3. 本番環境での実装例のご紹介 ------------------< 休 憩 >------------------ ※ないかも?EC2のアカウント情報を配ります。 ------------------< 手 技 >------------------ Dockerしてみるハンズオン イメージ的にはだいたいトータルで1H~1.5Hくらいの予定です。 質疑は懇親会でやりましょー。適当に声かけてください。
Agenda.
62
Case.
東南アジア某国 日系企業さま
社内システム作ってくれYO
63
Case.
東南アジア某国 日系企業さま
分かったYO
64
Case.
東南アジア某国 日系企業さま
ただしウチのVM上に作ってYO 開発環境はAPCだ YO
65
Case.
東南アジア某国 日系企業さま
(二度も環境構築とか 差異とかめんどくせーな・・・)
66
Case.
東南アジア某国 日系企業さま
(VMイメージもってくのも・・)
67
Case.
東南アジア某国 日系企業さま
(東南アジアだし 回線 遅いしなぁ。。)
68
Case.
東南アジア某国 日系企業さま
!!!!!
69
Case.
東南アジア某国 日系企業さま
お客さん、 いま世界はDockerです! コンテナもってきますYO!
70
Case.
東南アジア某国 日系企業さま
わかったYO
71
Case.
非常にざっくりいうと、そんな経緯でお客様のご理解を得て 受託してるSIerの我々はDockerで環境を作ることになりました。
72
Case.
コンテナとアプリを転送して乗せるだけ
ここは本日限り
73
ここは本日限り
------------------< 薀 蓄 >------------------ 1. Dockerってどんな技術?という概要 2. Dockerのオーケストレーションツールの紹介 3. 本番環境での実装例のご紹介 ------------------< 休 憩 >------------------ ※ないかも?EC2のアカウント情報を配ります。 ------------------< 手 技 >------------------ ★Dockerしてみるハンズオン イメージ的にはだいたいトータルで1H~1.5Hくらいの予定です。 質疑は懇親会でやりましょー。適当に声かけてください。
Agenda.
74
Agenda.
しかし、当ビル内ではタバコ吸えません・・・。
ごめんなさい・・・。
75
------------------< 薀 蓄 >------------------ 1. Dockerってどんな技術?という概要 2. Dockerのオーケストレーションツールの紹介 3. 本番環境での実装例のご紹介 ------------------< 休 憩 >------------------ ※ないかも?EC2のアカウント情報を配ります。 ------------------< 手 技 >------------------ ★Dockerしてみるハンズオン イメージ的にはだいたいトータルで1H~1.5Hくらいの予定です。 質疑は懇親会でやりましょー。適当に声かけてください。
Agenda.
76
Hands on.
手順1: お配りしたURLにアクセスして、鍵ファイル(pem)をDLしてください。 手順2: 何らかのターミナルでSSHにて、指定されたIPアドレスに入ってください。 それぞれ個別のEC2インスタンスを作っています。 手順3: ユーザ名は root パスワードは 無しです。 ※docker自体をインストール済みのCentOS6を用意しました。
77
Hands on.
基本操作を通じて、理解を深めるの巻
78
Hands on.
【レッスン1】 dockerのイメージを入手、そして確認。 # docker pull centos:centos6
centos:centos6: The image you are pulling has been verified
511136ea3c5a: Pull complete
5b12ef8fd570: Pull complete
f6808a3e4d9e: Pull complete
Status: Downloaded newer image for centos:centos6
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos centos6 b9aeeaeb5e17 32 hours ago 202.6 MB
centos 6 b9aeeaeb5e17 32 hours ago 202.6 MB
79
イメージ名
https://docs.docker.com/terms/layer/
Hands on.
ここを落としてきました。
80
Hands on.
【レッスン2】 dockerの起動。 # docker run -it centos:centos6 /bin/bash
[root@6b484935c662 /]#
[root@6b484935c662 /]#
[root@6b484935c662 /]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 11692 1876 ? Ss 10:26 0:00 /bin/bash
root 22 0.0 0.0 19696 1240 ? R+ 10:36 0:00 ps -aux
コンテナを立ち上げて、Dockerの中に入りました。 一瞬!かつめっちゃ早いですよね。隔離されてるので、何もプロセスが無いです。
イメージ名 実行プロセス 標準出力+TTY
81
Hands on.
【レッスン3】 dockerプロセスの確認。 別ターミナルを上げてSSHで入って、以下のコマンドを打ってください。 その際、ログインしているコンテナから出ないこと。
一意なID イメージ名 実行CMD 作られた時 ステータス 指定しないと 適当な名前
コンテナがひとつ立ち上がっているのが確認できます。
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b5a30e66a89b centos:centos6 "/bin/bash" 15 seconds ago Up 14 seconds suspicious_mcclintock
82
【レッスン4】 コンテナから出て確認します。
Hands on.
[root@6b484935c662 /]# exit
exit
[root@ip-172-31-8-137 ~]#
/bin/bashというアプリを立ち上げるプロセスに入っていたので、 そこからexitする=コンテナ終了となります。
コンテナから出ます
EC2インスタンス(ホストOS)に 戻ります
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
コンテナは消えています。
83
Hands on.
【レッスン5】 落ちたコンテナを確認→立ち上げてみます。
再度、動かすことができました。
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b5a30e66a89b centos:centos6 "/bin/bash" About a minute ago Exited (0) 4 seconds ago suspicious_mcclintock
# docker start bdebb1137587
b5a30e66a89b
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b5a30e66a89b centos:centos6 "/bin/bash" 3 minutes ago Up 10 seconds suspicious_mcclintock
Exitして終了している
叩き起こしてみる
生き返る!
コンテナID
84
Hands on.
【レッスン6】 もう一回、コンテナに入ってみます。
# docker exec -it bdebb1137587 /bin/bash
[root@6b484935c662 /]#
[root@6b484935c662 /]#
[root@6b484935c662 /]#
もう一回はいります。 /bin/bashの出力をとるかんじ。
[root@6b484935c662 /]# yum install –y telnet
YUMでtelnetをインストール。
コンテナID
85
別ターミナルを上げてSSHで入って、以下のコマンドを打ってください。 その際、ログインしているコンテナから出ないこと。
Hands on.
【レッスン7】 コミットしてイメージを保存します。
# docker commit bdebb1137587 yourname/test1:0.1
50c427451ecc9d4750b3d658d791ecf51cf503a4188c981bf477a17528a8a74a
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
hoge/test1 0.1 50c427451ecc 28 seconds ago 342.6 MB
centos latest 88f9454e60dd 2 days ago 223.9 MB
新しくイメージが出来ました!
コンテナID 名前+タグ
86
https://docs.docker.com/terms/layer/
Hands on.
Baseの上にもう一層を重ねました。
87
Hands on.
【レッスン8】 イメージを捨ててみます。
# docker rmi f8922a2b3a97
Untagged: hoge/test1:0.1
Deleted: 50c427451ecc9d4750b3d658d791ecf51cf503a4188c981bf477a17528a8a74a
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos centos6 f6808a3e4d9e 6 days ago 215.7 MB
消えました!
イメージID
88
Hands on.
【レッスン9】 ホストのIPアドレスとかを確認してみます。
# ip a
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> -snip- state UNKNOWN
link/ether a6:14:e2:10:30:01 brd ff:ff:ff:ff:ff:ff
inet 172.17.42.1/16 scope global docker0
inet6 fe80::ec3b:bdff:fea7:8629/64 scope link
valid_lft forever preferred_lft forever
9: vethf5d9822: <BROADCAST,UP,LOWER_UP> mtu 9001 qdisc noqueue state UP
link/ether a6:14:e2:10:30:01 brd ff:ff:ff:ff:ff:ff
inet6 fe80::a414:e2ff:fe10:3001/64 scope link
valid_lft forever preferred_lft forever
docker0 というインターフェイスがあります。
veth xxx というインターフェイスがあります。
docker0 と veth は同じmacアドレスになっています。
89
Hands on.
【レッスン10】 ホスト側のネットワーク情報とかを確認してみます。
# brctl show
bridge name bridge id STP enabled interfaces
docker0 8000.a614e2103001 no vethf5d9822
個別のNWが作られ、iptablesの機能で通信していることが分かります。
# iptables-save | grep docker0
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
仮想ブリッジに紐づいているのは 先ほどのveth=docker0です。
docker0に対しての許可ルールです。
90
Hands on.
【レッスン11】 コンテナのIPアドレスとかを確認してみます。
# docker exec -it bdebb1137587 /bin/bash
[root@6b484935c662 /]# ip a
8: eth0: <BROADCAST,UP,LOWER_UP> mtu 9001 qdisc noqueue state UP
link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.3/16 scope global eth0
inet6 fe80::42:acff:fe11:3/64 scope link
valid_lft forever preferred_lft forever
[root@6b484935c662 /]# ping 172.17.42.1
PING 172.17.42.1 (172.17.42.1) 56(84) bytes of data.
64 bytes from 172.17.42.1: icmp_seq=1 ttl=64 time=8.37 ms
eth0が出来ています。 そこにホスト側のdocker0と同セグメントの
IPアドレスが振られています。
同セグメントのdocker0にpingが飛びます。
91
# docker ps
Hands on.
【レッスン12】 不要なコンテナを削除します。
[root@79dfde92ce89 /]# exit
exit
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b5a30e66a89b centos:centos6 "/bin/bash" 6 minutes ago Up 3 minutes suspicious_mcclintock
# docker rm bdebb1137587
# docker ps -a イメージが残っていないことを確認します。
92
# docker stop bdebb1137587
# docker ps -a
指定したコンテナを消します。
# docker ps
Hands on.
【レッスン13】 docker inspectオプションを実行(準備)。
# docker run -it centos:centos6 /bin/bash
93
時間次第で実施
別ターミナルを上げてSSHで入って、以下のコマンドを打ってください。 その際、ログインしているコンテナから出ないこと。
コンテナの起動を確認
Hands on.
【レッスン14】 docker inspectオプションを実行。
# docker inspect bdebb1137587
# docker inspect --format="{{.NetworkSettings.IPAddress}}" bdebb1137587
個別のフィールドだけを抜き出すことも可能です。
作成時間、実行コマンド、IPアドレス、環境変数、イメージ、などなど・・・。
94
時間次第で実施
コンテナID
コンテナID
Hands on.
【レッスン15】 docker APIを叩いてみる。
# vi /etc/sysconfig/docker
編集前:other_args=“--dns=8.8.8.8” 編集後:other_args=“--dns=8.8.8.8 -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock"
# service docker restart
# curl http://127.0.0.1:4243/images/json | python -mjson.tool
保有しているイメージがJSONで返ってきます。
95
時間次第で実施
※ 最初はAPIは空いてないので、実際は事前に以下のようなファイル編集が必要
Hands on.
DockerFileを作って立ち上げてみるの巻
96
Hands on.
【レッスン16】 Dockerfileでイメージ化します。 (時間があれば)
# wget http://52.68.166.69 /Dockerfile
ファイルを任意のディレクトリにおいてください。
# docker build -t yourname/apache:0.1 .
イメージ名 タグ カレントディレクトリ
# docker images
作成したイメージがあることを確認してください。
97
時間次第で実施
Hands on.
【レッスン17】 Dockerfileで作ったイメージを立ち上げてみます。 # docker run -d -p 80:80 yourname/apache:0.1
98
イメージ名 タグ デタッチ
ホスト側のポート80を、コンテナの80に転送
# http://<IPADDR> に対して、ブラウザアクセスをしてみましょう
時間次第で実施
Fin
他にも紹介しきれてない色々なコマンド等がありますが、 https://docs.docker.com/reference/commandline/cli/ 公式のリファレンスが丁寧なので見てみると分かりやすいです。 あと –-help を使うと、その次を教えてくれたりもします。 例) docker run –-help など 色々とトライしてみてください!
99
Fin
コンテナ技術はシステム全体のオーケストレーションという 課題は残りつつも、実用化に向けて注目の分野です。
他にもrktやLXDという新しい風の予感もありますが、
当面はDockerがその最前線にいるだろうと思われます。
100
https://coreos.com/blog/rocket/
Fin
ご質問は懇親会でざっくばらんに聞いてみてください。
私がビールで酔っぱらう前が良いと思います。
101
Fin
最後に、ささやかなCM。
102
Fin
ご清聴、ありがとうございました。
104