Top Banner
(C)Copyright 1996-2014 SAKURA Internet Inc. ささささささささささ ささささささささささささささ Docker ささささささささささ 第 17 第 第第第第第第 in 第第 第第第第 (@kunihirotanaka)
104

Sakura no-yuube-20140327

Jun 30, 2015

Download

Documents

Kunihiro TANAKA
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Sakura no-yuube-20140327

(C)Copyright 1996-2014 SAKURA Internet Inc.

さくらのクラウドでのウェブサービスかんたん運用術~ Docker をつかってみた~

福岡編

第 17 回 さくらの夕べ in 福岡田中邦裕  (@kunihirotanaka)

Page 2: Sakura no-yuube-20140327

2

目次

2

1 自己紹介

「さくらのクラウド」のご紹介

Docker をつかってみた

1

2

3

Page 3: Sakura no-yuube-20140327

3

• 名前   :田中邦裕(たなかくにひろ)• 年齢   : 36 歳• 出身   :大阪(今も一応、大阪在住) • 趣味

• プログラミング–計算機科学方面ではなく、何かを動かすのが好き

• 電子工作–ラジオから AVR( マイコン ) まで

• DTM– SC-55 を皮切りにパソ通などにアップしていた

• 旅行&鉄道–北海道から沖縄まで国内専門、あと乗り鉄

• アニメ–人並み程度に視聴

自己紹介

@kunihirotanakahttp://facebook.com/kunihirotanaka

Page 4: Sakura no-yuube-20140327

4

日曜プログラミングしています

• さくらのクラウドも最初は個人で作ってました• 昔は Apache ドキュメント翻訳やってました• いわゆるジェネレーター系サイトやってます

Page 5: Sakura no-yuube-20140327

5

日曜プログラミングしています

Page 6: Sakura no-yuube-20140327

6

日曜プログラミングしています

Page 7: Sakura no-yuube-20140327

7

日曜プログラミングしています

Page 8: Sakura no-yuube-20140327

8

日曜プログラミングしています

• 自分しか使わないアプリ作りも好きです。

Page 9: Sakura no-yuube-20140327

9

日曜プログラミングしています

• 自分しか使わないアプリ作りも好きです。

Page 10: Sakura no-yuube-20140327

10

• さくらインターネットの紹介

Page 11: Sakura no-yuube-20140327

11

さくらインターネットの紹介

1996 年 京都府舞鶴市にて創業1998 年 大阪市中央区へ移転1999 年 株式会社化、東京支社開設

大阪・東京へ IDC を新設2005 年 東証マザーズへ上場2011 年 石狩 IDC を新設

商号 さくらインターネット株式会社

本社所在地 大阪市中央区南本町一丁目 8 番 14 号

設立年月日1999 年 8 月 17 日(サービス開始は 1996 年 12 月 23日)

取締役

代表取締役 社長 田中 邦裕取締役 副社長  舘野 正明取締役      川田 正貴取締役      村上 宗久取締役(社外)  野村 昌雄

上場年月日 2005 年 10 月 12 日(東証マザーズ)

決算 3 月末日

資本金 8 億 9,530 万円

従業員数 225 名

1996 年からサービスを行うデータセンター・ホスティングの老舗です

Page 12: Sakura no-yuube-20140327

12

さくらインターネットの事業

12

当社サービス別売上高構成比(’ 13/3 期)

その他

ホスティング58.2 %

ハウジング32.8 %

データセンターサービス

ホスティング

仮想ホスティング:

物理ホスティング:

・ VPS ・クラウドサービス

・専用サーバサービス・レンタルサーバサービス

コロケー

ショ

ンスペース貸し  :

ラック貸し   : ・ハウジングサービス

既存サービス

新たなサービス

・大規模ハウジング案件(石狩 DC )

データセンターサービスを幅広く手掛けるが、近年ではクラウド・ホスティング系が2/3以

上に

Page 13: Sakura no-yuube-20140327

13

数字で見るさくらインターネット(四半期決算)

(金額:百万円)

科目名‘13/3期 ’14/3期 前四半期比

Q1 Q2 Q3 Q4 Q1 Q2 Q3 増減額 増減率

ハウジング 760 757 786 805 793 776 716 ▲59 ▲7.7%

 構成比 32.5% 32.5% 33.2% 33.0% 32.1% 31.3% 28.3%

専用サーバ 751 729 686 688 679 656 644 ▲12 ▲1.8%

 構成比 32.1% 31.3% 29.0% 28.2% 27.5% 26.5% 25.4%

レンタルサーバ 463 475 489 504 517 537 548 10 1.9%

 構成比 19.8% 20.4% 20.7% 20.7% 20.9% 21.7% 21.6%

VPS・クラウド 143 155 200 232 260 286 319 33 11.8%

 構成比 6.2% 6.7% 8.5% 9.5% 10.5% 11.5% 12.6%

その他 221 212 207 210 222 221 305 84 37.9%

 構成比 9.4% 9.1% 8.7% 8.6% 9.0% 8.9% 12.1%

中でも、 VPS ・クラウドは高い伸び

Page 14: Sakura no-yuube-20140327

14

北海道石狩市にデータセンターを作ったりもしています

Page 15: Sakura no-yuube-20140327

15

「さくらのクラウド」のご紹介

Page 16: Sakura no-yuube-20140327

16

「さくらのクラウド」のご紹介その前に!

Page 17: Sakura no-yuube-20140327

17

祝LXC 1.0.0リリース

Page 18: Sakura no-yuube-20140327

18

祝CentOS 6.5

Dockerサポート!

Page 19: Sakura no-yuube-20140327

19

キャンペーンは終わりましたが、さくら賞の「桜葉愛グッズ」のうち

ステッカーを参加者全員にプレゼント!

Page 20: Sakura no-yuube-20140327

20

「さくらのクラウド」のご紹介

Page 21: Sakura no-yuube-20140327

21

「さくらのクラウド」のコンセプト

「開発者志向のシンプルクラウド」

何の変哲もない IaaS型クラウドを圧倒的なコストパフォーマンスで提供する

Page 22: Sakura no-yuube-20140327

22

さくらのVPSが

スケールできて、ネットワークが自由に組めれば

いいよね

Page 23: Sakura no-yuube-20140327

23

それが、さくらのクラウド

Page 24: Sakura no-yuube-20140327

24

インスタンスというより

サーバーといった感覚

Page 25: Sakura no-yuube-20140327

25

たくさんのサーバを

たくさんのサーバーを

Page 26: Sakura no-yuube-20140327

26

かんたんに追加し

かんたんに追加し

Page 27: Sakura no-yuube-20140327

27

アップグレードしたりダウングレードしたり

アップグレードしたりダウングレードしたり

Page 28: Sakura no-yuube-20140327

28

複製してスケールアウトさせたり

複製してスケールアウトさせたり

Page 29: Sakura no-yuube-20140327

29

かんたんに削除できます

かんたんに削除できます。

Page 30: Sakura no-yuube-20140327

30

ロードバランサーもあります

ロードバランサーもあります

Page 31: Sakura no-yuube-20140327

31

月額料金

転送量課金のない、固定制の課金形態で

Page 32: Sakura no-yuube-20140327

32

日割料金

日割り課金も対応しており

Page 33: Sakura no-yuube-20140327

33

新しい時間割料金表

昨年から時間割料金にも対応しています。

Page 34: Sakura no-yuube-20140327

34

料金プランは選択する必要なし

20 日以上つかうと月額料金が自動適用され経済的。

Page 35: Sakura no-yuube-20140327

35

従量課金制なし、事前に料金が予想できる

転送量課金がないため、事前に料金計算ができます。お客様がサーバーを増減させない限り固定料金です。

他社同等プラン( Small )

さくらのクラウド( 1 コア 2GB )

0

5000

10000

15000

20000

25000

30000

35000

40000

料金比較 ( 従量課金適用時( 1.6TB/ 月)

基本料金

Page 36: Sakura no-yuube-20140327

36

ブラウザからサーバにアクセス

リモートスクリーン機能を使えば、ブラウザからサーバにアクセスできます

Page 37: Sakura no-yuube-20140327

37

PXEブートの設定も可能で

PXE ブートの設定も可能で

Page 38: Sakura no-yuube-20140327

38

OSの選択も可能で

OS の選択も可能で

Page 39: Sakura no-yuube-20140327

39

boot オプショ ンの変更も可能で

boot オプショ ンの変更も可能で

Page 40: Sakura no-yuube-20140327

40

シングルユーザーモードにだって

シングルユーザーモードにだって

Page 41: Sakura no-yuube-20140327

41

シングルユーザーモードにだってなれます

シングルユーザーモードにだってなれます

Page 42: Sakura no-yuube-20140327

42

fstab を変更したり

fstab を変更したり

Page 43: Sakura no-yuube-20140327

43

iptables を変更したり

iptables を変更したり

Page 44: Sakura no-yuube-20140327

44

パニックが起きた後も確認できます

パニックが起きた後も確認できます

Page 45: Sakura no-yuube-20140327

45

ネットワークも自由に組めます

ネットワークも自由に組めます

Page 46: Sakura no-yuube-20140327

46

NIC を追加して

NIC を追加して

Page 47: Sakura no-yuube-20140327

47

線を伸ばして

線を伸ばして

Page 48: Sakura no-yuube-20140327

48

ネットワーク接続もできます

ネットワーク接続もできます

Page 49: Sakura no-yuube-20140327

49

「物理データセンター」とも接続できます

ハイブリッド接続を利用すれば「物理データセンター」である「さくらの専用サーバ」や「リモートハウジング」と接続可能

Page 50: Sakura no-yuube-20140327

50

ディスクの取り扱いも便利です

サーバを起動しなくても、ディスク修正を行うことができます。

Page 51: Sakura no-yuube-20140327

51

コピー機能でスナップショ ットも取れます

サーバにつなげられる「ディスク」と、つなげられないけど安価な「アーカイブ」へ、ワンタッチでスナップショ ットを作成できます。

Page 52: Sakura no-yuube-20140327

52

さくらのVPSからワンタッチでコピー出来ます

さくらのVPSのスナップショ ットをとり、20 分~ 90 分程度でさくらのクラウドへ

コピーさせることが可能です。

Page 53: Sakura no-yuube-20140327

53

SSD の提供もあります。それもHDDと同価格!

「標準プラン」でも一般的な HDDよりも性能が良く、同価格で提供している 20GB の SSD はさらにパフォーマンスが優れてます

IOPSの比較

Page 54: Sakura no-yuube-20140327

54

標準でAPIをサポート

REST形式でアクセス可能で、 /server/ ならサーバ一覧など、直観的なAPIアクセスを実現。

$ curl --user “APIKEY":“SECRET" https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/server/Index":0,"ID":"112400226821","Name":"git\u30b5\u30fc\u30d01","HostName":"localhost","Description":"","ServiceClass":"cloud\/plan\/1","CreatedAt":"2012-05-07T00:19:44+09:00“,"Icon":{"ID":"112500078923","URL":"https:\/\/secure.sakura.ad.jp\/cloud\/zone\/is1a\/api\/cloud\/1.1\/icon\/112500078923.png","Name":"\u30cd\u30b3","Sc$ curl --user “APIKEY":“SECRET" -H 'X-Sakura-API-Beautify:1' https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/server/"From": 0, "Count": 29, "Total": 29, "Servers": [ { "Index": 0, "ID": "112400226821", "Name": "git\u30b5\u30fc\u30d01", "HostName": "localhost“,

Page 55: Sakura no-yuube-20140327

55

CLI “sacloud” も用意しています。$ sudo ~/.nave/nave.sh usemain stable[sudo] password for tanaka:######################################################################## 100.0%installed from binary$ sudo npm install -g sacloud$ sacloud config --apiRoot="https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/"/home/tanaka/.sacloudcfg.json:{ "apiRoot": "https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/"}$ sacloud config --accessToken=APIKEY --accessTokenSecret=SECRET/home/tanaka/.sacloudcfg.json:{ "apiRoot": "https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/", "accessToken": “APIKEY", "accessTokenSecret": “SECRET"}$ sacloud show serverGET https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/server.json?{} -> 200 OK (1/1) ~1.539sec+--------------+--------------------+--------+---------------------+| id | name | status | created at |+--------------+--------------------+--------+---------------------+| 112400226821 | git サーバ 1 | up | 2012-05-07 00:19:44 |+--------------+--------------------+--------+---------------------+| 112500271369 | www2 | up | 2013-06-20 00:27:33 |+--------------+--------------------+--------+---------------------+| 112400258152 | rp1 | up | 2012-05-28 15:35:11 |

Page 56: Sakura no-yuube-20140327

56

CSV や TSV 出力も可能です$ sacloud show server --csvid,name,status,created at112400226821,git サーバ 1,up,2012-05-07 00:19:44112500271369,www2,up,2013-06-20 00:27:33112400258152,rp1,up,2012-05-28 15:35:11112500271375,www1,up,2013-06-20 00:29:42112500271998,www3,up,2013-06-20 06:58:37112500272024,www4,up,2013-06-20 07:09:54

$ sacloud show server --tsvid name status created at112400226821 git サーバ 1 up 2012-05-07 00:19:44112500271369 www2 up 2013-06-20 00:27:33112400258152 rp1 up 2012-05-28 15:35:11112500271375 www1 up 2013-06-20 00:29:42112500271998 www3 up 2013-06-20 06:58:37112500272024 www4 up 2013-06-20 07:09:54

Page 57: Sakura no-yuube-20140327

57

もちろん json 出力も可能です$ sacloud show server --json[{ "requestInfo": { "time": 1393585261726, "method": "GET", "url": "https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/server.json?{}", "path": "server" }, "request": {}, "responseInfo": { "time": 1393585262494, "latency": 768, "length": 55217, "serial": "b63869571cb83144b68dc73e8d7ed9fe", "status": 200, "statusText": "OK", "type": "resources", "key": "servers" }, "response": { "from": 0, "count": 29, "total": 29, "servers": [

Page 58: Sakura no-yuube-20140327

58

サービスの強化にも積極的です

・ Windows Server 追加・ VPS からのクラウドへのマイグレーショ ン機能追加・ SLA・時間割課金・第 2ゾーン提供開始・小容量から大容量ディスクへのコピー機能・ゾーン間接続機能・ Windows VDI サービス提供開始・アーカイブのゾーン間コピー機能提供開始・スタートアップスクリプト機能ベータ提供開始・ブートデバイス順序指定タグ・ルータ+スイッチの IPv6対応 (β)・準仮想化ネットワークドライバ対応・パケットフィルタ機能強化

この半年で追加した機能

Page 59: Sakura no-yuube-20140327

59

スタートアップスクリプト

サーバ作成時に任意のシェルスクリプトを「スタートアップスクリプト」から選択して

おけばサーバ起動時に実行させることができます。

Page 60: Sakura no-yuube-20140327

60

自作スタートアップスクリプトも作れます

例えば、 Docker がセットアップ済みのサーバーを

作ることなんかもできます。

Page 61: Sakura no-yuube-20140327

61

git からのインポートも対応予定

他の人の作ったスタートアップスクリプトをベースに、簡単にサーバー立ち上げができるように!

Page 62: Sakura no-yuube-20140327

62

ということで

Page 63: Sakura no-yuube-20140327

63

宣伝は終わりです

Page 64: Sakura no-yuube-20140327

64

Docker をやってみよう!

Page 65: Sakura no-yuube-20140327

65

まず Immutable Infrastructure の勉強

運用中はサーバーの変更をしない!Immutable = 状態を変えられない

新しい設定やアプリを入れる時には、新しい設定をしたサーバーを新しく立ち上げ

Page 66: Sakura no-yuube-20140327

66

まず Immutable Infrastructure の勉強

Server 1アプリサー

Server 2アプリサー

バServer 3

DB サーバ

ロードバランサー

現行環境

最初の環境

Page 67: Sakura no-yuube-20140327

67

まず Immutable Infrastructure の勉強

10/25 – アプリケーションの修正Server 4

アプリサーバ

Server 5アプリサー

バServer 3

DB サーバ

ロードバランサー

現行環境

アプリの修正のため Server4 と Server5 を新規に立ち上げ

Page 68: Sakura no-yuube-20140327

68

まず Immutable Infrastructure の勉強

10/25 – アプリケーションの修正

1/15 – DB サーバーにセキュリティパッチ適用

Server 4アプリサー

Server 5アプリサー

バServer 3

DB サーバ

ロードバランサー

Server 4アプリサー

Server 5アプリサー

バServer 6

DB サーバ

古い環境

現行環境

DB サーバにパッチをあてるべく Server6 を立ち上げ

Page 69: Sakura no-yuube-20140327

69

まず Immutable Infrastructure の勉強

10/25 – アプリケーションの修正

1/15 – DB サーバーにセキュリティパッチ適用

Server 4アプリサー

Server 5アプリサー

バServer 3

DB サーバ

3/1 – アプリサーバの設定変更&増設(予定)

ロードバランサー

Server 4アプリサー

Server 5アプリサー

バServer 6

DB サーバ

Server 8アプリサー

Server 9アプリサー

バServer 6

DB サーバServer 7

アプリサーバ

古い環境

現行環境

新しい環境

新しい環境をつくり、テストを開始

Page 70: Sakura no-yuube-20140327

70

1/15 – DB サーバーにセキュリティパッチ適用

まず Immutable Infrastructure の勉強

3/1 – アプリサーバの設定変更&増設

ロードバランサー

Server 4アプリサー

Server 5アプリサー

バServer 6

DB サーバ

Server 8アプリサー

Server 9アプリサー

バServer 6

DB サーバServer 7

アプリサーバ

現行環境

どんどん、新しい環境へ切り替えて、古い環境は捨てる

古い環境

Page 71: Sakura no-yuube-20140327

71

でもサーバーをたくさん借りるとお金がかかる

サーバーをたくさん借りるとお金がかかる

新しい環境作るたびにVPSや EC2 借りるの?

もったいないよね。

Page 72: Sakura no-yuube-20140327

72

サーバーの上に自分でサーバーを作れれば…

それなら、借りたサーバー上に仮想的にサーバー環境を作ればいいじゃん。

サーバーの上にコンテナを載せて。

Page 73: Sakura no-yuube-20140327

73

ここでコンテナの登場!

ハードウェア

ホスト OS

ハイパーバイザー

ゲスト OS

プロセス

プロセス

ゲスト OS

プロセス

プロセス

ハードウェア

ホスト OS

プロセス

プロセス

プロセス

プロセス

完全仮想化 コンテナ

コンテナはハイパーバイザーを挟まないライトウェイトな仮想化ソリューション赤の他人同士で使うのは気が引けるが、

内輪で仮想化するならもってこい。

Page 74: Sakura no-yuube-20140327

74

ここでコンテナの登場!

ハードウェア

ホスト OS

ハイパーバイザー

ゲスト OS

プロセス

プロセス

ゲスト OS

プロセス

プロセス

ハードウェア

ホスト OS

プロセス

プロセス

プロセス

プロセス

完全仮想化 コンテナ

コンテナはハイパーバイザーを挟まないライトウェイトな仮想化ソリューション赤の他人同士で使うのは気が引けるが、

内輪で仮想化するならもってこい。

VPS・仮想サーバ

ゲスト OS

プロセス

プロセス

プロセス

プロセス

コンテナ

Page 75: Sakura no-yuube-20140327

75

Docker の紹介

Linux では LXC というコンテナ技術があるがいささか使いにくい(という人が多い)

それを手軽にしたのが Docker

Page 76: Sakura no-yuube-20140327

76

Docker の紹介

コンテナサーバー1

コンテナサーバー2

コンテナサーバー3

借りた IaaS クラウドや VPS などのサーバー

LXCDocker

LXC を手軽に使えるインターフェースを備え、サーバーを作って壊すが簡単にできます。

Page 77: Sakura no-yuube-20140327

77

ではインストール

$ sudo wget -P /etc/yum.repos.d http://www.hop5.in/yum/el6/hop5.repo$ sudo yum install xz docker-io -y

CentOS 6.5 から Docker をサポートしたので、ワンタッチでインストール可能

Page 78: Sakura no-yuube-20140327

78

インストールが完了すれば起動させる

$ sudo wget -P /etc/yum.repos.d http://www.hop5.in/yum/el6/hop5.repo$ sudo yum install xz docker-io -y$ sudo service docker startStarting cgconfig service: [ OK ]Starting docker: [ OK ]$

service docker start で Docker が起動される

Page 79: Sakura no-yuube-20140327

79

Docker を使う

$ sudo docker run –i –t centos /bin/bash

docker run すると、新しいコンテナが作られ、引数で指定されたコマンドが実行される

TTY を利用できるように

する

コンテナの標準入力を有効にする

Page 80: Sakura no-yuube-20140327

80

Docker を使う

$ sudo docker run –i –t centos /bin/bashbash-4.1# ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.1 0.0 11304 1584 ? S 07:22 0:00 /bin/bashroot 8 0.0 0.0 13364 1060 ? R+ 07:22 0:00 ps aux

docker run すると、新しいコンテナが作られ、引数で指定されたコマンドが実行される

引数で指定したコマンドが PID=1 として実行され

Page 81: Sakura no-yuube-20140327

81

Docker を使う

$ sudo docker run –i –t centos /bin/bashbash-4.1# ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.1 0.0 11304 1584 ? S 07:22 0:00 /bin/bashroot 8 0.0 0.0 13364 1060 ? R+ 07:22 0:00 ps auxbash-4.1# hostname7749f193be9cbash-4.1# ifconfigeth0 Link encap:Ethernet HWaddr A6:B8:BE:38:82:F3 inet addr:172.17.0.2 Bcast:0.0.0.0 Mask:255.255.0.0 inet6 addr: fe80::a4b8:beff:fe38:82f3/64 Scope:Link

引数で指定したコマンドが PID=1 として実行され

コンテナの ID がホスト名として付与され

ホスト側と異なるIP アドレスが付与される

docker run すると、新しいコンテナが作られ、引数で指定されたコマンドが実行される

Page 82: Sakura no-yuube-20140327

82

Docker を使う

$ sudo docker run –i –t centos /bin/bashbash-4.1# ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.1 0.0 11304 1584 ? S 07:22 0:00 /bin/bashroot 8 0.0 0.0 13364 1060 ? R+ 07:22 0:00 ps auxbash-4.1# hostname7749f193be9cbash-4.1# ifconfigeth0 Link encap:Ethernet HWaddr A6:B8:BE:38:82:F3 inet addr:172.17.0.2 Bcast:0.0.0.0 Mask:255.255.0.0 inet6 addr: fe80::a4b8:beff:fe38:82f3/64 Scope:Link~略~bash-4.1# exit$

コンテナが exit されると、そのコンテナは破棄される

引数で指定したコマンドが PID=1 として実行され

コンテナの ID がホスト名として付与され

ホスト側と異なるIP アドレスが付与される

Page 83: Sakura no-yuube-20140327

83

• docker で実行されるのは引数で指定したコマンドだけ– /bin/bash を実行しても sshd は実行されない– /usr/bin/sshd のように直接指定する必要がある

押さえておくポイント (1)

通常のサーバ docker の場合

/sbin/init

httpd

sshd

bash

ps

bash

ps

httpdCGI

CGI

sshd

bash

Page 84: Sakura no-yuube-20140327

84

• docker を立ち上げるたびに新しい環境–通常のサーバーと違い再起動するとデータは巻き戻る

押さえておくポイント (2)

Docker イメージCentOS

Docker コンテナ

Docker コンテナ

Docker コンテナ

Docker コンテナ

docker run

docker run

docker run

docker run

相互に干渉はしない

Page 85: Sakura no-yuube-20140327

85

終了したコンテナの一覧を見る

$ sudo docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORT NAMES7749f193be9c centos /bin/bash 3 hours ago Exit 0 naughty_feynmanec2a32c5673d centos /bin/bash 8 hours ago Exit 1 pensive_curie69f83a9a94849 centos /bin/bash 8 hours ago Exit 1 thirsty_lumiere6db258573742 centos /bin/bash 8 hours ago Exit 0 suspicious_mclean

終了したコンテナのデータは、明示的に削除しない限り、残されている

Page 86: Sakura no-yuube-20140327

86

終了したコンテナからイメージを作る

$ sudo docker commit 7749f193be9c centos:test9f96c865d261b982cc2266b5cfba0af39da57111b53b476a9179a3be2a475966$ sudo docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEcentos test 9f96c865d261 23 seconds ago 599.5 MB

終了したコンテナをコミットすると、イメージ化されて、 docker run させることが

できる

新しいイメージに付与する

タグを指定

Page 87: Sakura no-yuube-20140327

87

Docker におけるイメージとコンテナの関係

コンテナc1ae0d1372d8

イメージcentos: latest

docker run

イメージからコンテナを作成し run する

Page 88: Sakura no-yuube-20140327

88

Docker におけるイメージとコンテナの関係

コンテナc1ae0d1372d8

コンテナ15cb2a03c788

コンテナd7580743d875

イメージcentos: latest

docker run

run するたびに、新しいコンテナが生成される

イメージからコンテナを作成し run するrun するたびに新しい環境が作られる

Page 89: Sakura no-yuube-20140327

89

Docker におけるイメージとコンテナの関係

コンテナc1ae0d1372d8

コンテナ15cb2a03c788

コンテナd7580743d875

イメージcentos:test

イメージcentos: latest

docker run

docker commit

run するたびに、新しいコンテナが生成される

commit して、イメージ化する

イメージからコンテナを作成し run するコンテナを commit すると新しいイメージが

作られる

Page 90: Sakura no-yuube-20140327

90

Docker におけるイメージとコンテナの関係

コンテナc1ae0d1372d8

コンテナ15cb2a03c788

コンテナd7580743d875

イメージcentos:test

イメージcentos: latest

docker run

docker commit

run するたびに、新しいコンテナが生成される

commit して、イメージ化する

コンテナ45e540c71952

docker run

イメージからコンテナを作成し run するコンテナを commit すると新しいイメージが

作られる

Page 91: Sakura no-yuube-20140327

91

先ほどイメージ化したものから起動

最初に実行したコマンドがhistory に残っているのがわかる。

$ sudo docker run –i –t centos:test /bin/bashbash-4.1# history 1 ps aux 2 hostname 3 ifconfig 4 exit 5 historybash-4.1# exit$

先ほどイメージに付与したタグを指定

Page 92: Sakura no-yuube-20140327

92

LAMP 環境を作ってみよう

Page 93: Sakura no-yuube-20140327

93

Docker による LAMP環境作成

一つの Docker 内で複数サービスを動作させるために、 monit を使用する

monit

docker

Apache fluentd sshd

Docker コンテナ

MySQL

Page 94: Sakura no-yuube-20140327

94

インストール手順( 1 )

$ git clone https://github.com/kunihirotanaka/docker-centos-lamp.gitInitialized empty Git repository in /home/tanaka/docker-centos-lamp/.git/remote: Counting objects: 32, done.remote: Compressing objects: 100% (24/24), done.remote: Total 32 (delta 11), reused 26 (delta 8)Unpacking objects: 100% (32/32), done.$ cd docker-centos-lamp/$ lsDockerfile README.md monit.conf monit.mysqld monit.td-agent td.repoLICENSE authorized_keys monit.httpd monit.sshd td-agent.conf

Dockerfile という定義ファイルを取得する

Page 95: Sakura no-yuube-20140327

95

インストール手順( 2 )

Dockerfile を編集

FROM centosMAINTAINER Kunihiro Tanaka

ENV IP __YOUR_IP_ADDRESS_HERE__ENV PW __YOUR_PASSWORD_HERE__ENV LOGSERVER __YOUR_LOG_SERVER_HERE__

FROM centosMAINTAINER Kunihiro Tanaka

ENV IP 192.168.50.3ENV PW Jhd30KwjENV LOGSERVER logserver.example.jp

Dockerfile 変更前 Dockerfile 変更例

Page 96: Sakura no-yuube-20140327

96

インストール手順( 3 )

$ sudo docker build -t centos:lamp .~略~Successfully built c94a7828a3a9$ sudo docker images[sudo] password for tanaka:REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEcentos lamp c94a7828a3a9 About a minute ago 1.156

docker build を実行けっこう時間かかります。

新しく作成されるイメージに付与するタグ

Page 97: Sakura no-yuube-20140327

97

起動する

$ sudo docker run -d -t -p 12812:2812 -p 10080:80 -p 10022:22 ¥ centos:lamp /usr/bin/monit –I65d63382ebac74066290024a096fc291cf054435e1d10331ee1a03ac7e5e0c65

先ほどの Docker イメージから monit を起動する。

monit に -I オプションで、フォアグラウンド実行。

-d はデーモンとしてバックグラウンド実行させる -p はポート転送

Page 98: Sakura no-yuube-20140327

98

起動する

$ sudo docker run -d -t -p 12812:2812 -p 10080:80 -p 10022:22 ¥ centos:lamp /usr/bin/monit –I65d63382ebac74066290024a096fc291cf054435e1d10331ee1a03ac7e5e0c65$ sudo docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES65d63382ebac b3f874bbbd97 /usr/bin/monit -I 49 seconds ago Up 48 seconds 0.0.0.0:10022->22/tcp, 0.0.0.0:10080->80/tcp, 0.0.0.0:12812->2812/tcp prickly_lovelace

docker ps すると、 monit が実行されていることが

確認できる

Page 99: Sakura no-yuube-20140327

99

monit へアクセスしてみる

docker の動いているサーバの 12812 番ポートdocker なら http://192.168.1.1:12812/

ユーザ名は admin 、パスワードは monit

Page 100: Sakura no-yuube-20140327

100

phpMyAdmin でアクセスしてみる

docker の動いているサーバの 10080 番ポート192.168.1.1 なら http://192.168.1.1:10080/phpmyadmin/

ユーザ名は root 、パスワードは先ほどのもの

Page 101: Sakura no-yuube-20140327

101

構築完了

ということで

構築完了しました!

Page 102: Sakura no-yuube-20140327

102

本日いらっしゃった皆様に

2 万円分の「さくらのクラウド」無料クーポンを差し上げます

ご登録は 2014 年 5 月末まで、 1 年間有効です。すでに利用されている方でも、クーポンが初めてであればご利用頂けます。

Page 103: Sakura no-yuube-20140327

103

ご清聴ありがとうございました

• フィードバック、感想よろしくお願いします• 他のイベントにも、ぜひ呼んでいただければ幸いです

–ハッシュタグ  #sacloud –公式 Twitter   @sakuracloud–ブログや Twitter での感想をお待ちしております

Page 104: Sakura no-yuube-20140327

104

[参考 ] さくらのクラウドのベンチマーク

0

500

1000

1500

2000

2500

3000

3500

4000

4500

5000 4 コア 8GB 2 コア 2GB 1 コア 2GB

Large Medium Small

※UnixBench Index Score

6/19 (水) 6/20 (木) 6/21 (金) 6/22 (土)

MAX 4303 AVE 3818 MIN 3464

MAX 2707 AVE 2425 MIN 2180

MAX 1629 AVE 1589 MIN 1521

MAX 325 AVE 304 MIN 291

MAX 619 AVE 563 MIN 472

MAX 161 AVE 152 MIN 142