osc 2014 tokyo/spring...

110
(C)Copyright 1996-2014 SAKURA Internet Inc. ささささささささささささささささささささ 「」 ささささささささささささささ Docker さささささささオオオオオオオオオオオオオオ2014 Tokyo オオオオ (@kunihirotanaka)

Upload: kunihiro-tanaka

Post on 30-Jun-2015

4.195 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

(C)Copyright 1996-2014 SAKURA Internet Inc.

さくらの社長が語る!「さくらのクラウド」での

ウェブサービスかんたん運用術~ Docker をつかってみた~

オープンソースカンファレンス2014 Tokyo田中邦裕  (@kunihirotanaka)

Page 2: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

2

目次

2

1 自己紹介

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

Docker をつかってみた

1

2

3

宣伝 4 割、 Docker 1 割、求人 5 割です

Page 3: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

3

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

自己紹介

@kunihirotanakahttp://facebook.com/kunihirotanaka

Page 4: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

4

趣味

•プログラミング–計算機科学方面ではなく、何かを動かすのが好き•電子工作–ラジオから AVR( マイコン ) まで•DTM–SC-55 を皮切りにパソ通などにアップしていた•旅行&鉄道–北海道から沖縄まで国内専門、あと乗り鉄•アニメ–人並み程度に視聴

Page 5: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

5

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

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

Page 6: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

6

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

Page 7: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

7

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

Page 8: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

8

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

Page 9: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

9

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

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

Page 10: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

10

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

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

Page 11: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

11

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

Page 12: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

12

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

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 13: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

13

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

13

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

その他

ホスティング58.2%

ハウジング32.8%

データセンターサービス

ホスティング

仮想ホスティング:

物理ホスティング:

・ VPS ・クラウドサービス

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

コロケー

ショ

ンスペース貸し  :

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

既存サービス

新たなサービス

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

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

上に

Page 14: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

14

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

(金額:百万円)

科目名‘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 15: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

15

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

Page 16: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

16

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

Page 17: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

17

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

Page 18: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

18

祝LXC 1.0.0リリース

Page 19: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

19

祝CentOS 6.5

Dockerサポート!

Page 20: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

20

本当は去年のうちに 55,555件突破してたんですがキャンペーンが間に合わず今の時期に・・・

Page 21: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

21

ちなみに、個人的には

AWS も好き!なので嫌わないでください

Page 22: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

22

余談ですが…

クラウドの決め手って何か知ってますか?

価格?性能?機能?

Page 23: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

23

みんなが使ってるが正義!AWS でいいんじゃないの?

さくらのVPSでいいんじゃないの?

Page 24: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

24

でも、ちょっと待った!

Page 25: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

25

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

ただ、この娘売り出し中で

Page 26: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

26

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

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

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

Page 27: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

27

さくらのVPSが

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

いいよね

Page 28: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

28

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

Page 29: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

29

インスタンスというより

サーバーといった感覚

Page 30: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

30

たくさんのサーバを

たくさんのサーバーを

Page 31: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

31

かんたんに追加し

かんたんに追加し

Page 32: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

32

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

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

Page 33: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

33

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

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

Page 34: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

34

かんたんに削除できます

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

Page 35: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

35

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

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

Page 36: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

36

月額料金

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

Page 37: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

37

日割料金

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

Page 38: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

38

新しい時間割料金表

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

Page 39: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

39

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

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

Page 40: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

40

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

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

他社同等プラン( Small )

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

0

5000

10000

15000

20000

25000

30000

35000

40000

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

基本料金

Page 41: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

41

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

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

Page 42: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

42

PXEブートの設定も可能で

PXE ブートの設定も可能で

Page 43: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

43

OSの選択も可能で

OS の選択も可能で

Page 44: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

44

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

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

Page 45: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

45

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

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

Page 46: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

46

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

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

Page 47: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

47

fstab を変更したり

fstab を変更したり

Page 48: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

48

iptables を変更したり

iptables を変更したり

Page 49: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

49

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

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

Page 50: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

50

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

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

Page 51: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

51

NIC を追加して

NIC を追加して

Page 52: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

52

線を伸ばして

線を伸ばして

Page 53: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

53

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

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

Page 54: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

54

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

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

Page 55: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

55

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

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

Page 56: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

56

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

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

Page 57: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

57

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

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

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

Page 58: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

58

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

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

IOPSの比較

Page 59: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

59

標準で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 60: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

60

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 61: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

61

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 62: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

62

もちろん 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 63: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

63

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

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

この半年で追加した機能

Page 64: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

64

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

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

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

Page 65: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

65

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

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

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

Page 66: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

66

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

他の人の作ったスタートアップスクリプトをベースに、簡単にサーバー

立ち上げができるように!

Page 67: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

67

ということで

Page 68: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

68

宣伝は終わりです

Page 69: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

69

Docker をやってみよう!

Page 70: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

70

まず Immutable Infrastructure の勉強

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

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

Page 71: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

71

まず Immutable Infrastructure の勉強

Server 1アプリサー

Server 2アプリサー

バServer 3

DB サーバ

ロードバランサー

現行環境

最初の環境

Page 72: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

72

まず Immutable Infrastructure の勉強

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

アプリサーバ

Server 5アプリサー

バServer 3

DB サーバ

ロードバランサー

現行環境

アプリケーショ ンの修正のため Server4 と Server5 を新規に立ち上げ

Page 73: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

73

まず Immutable Infrastructure の勉強

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

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

Server 4アプリサー

Server 5アプリサー

バServer 3

DB サーバ

ロードバランサー

Server 4アプリサー

Server 5アプリサー

バServer 6

DB サーバ

古い環境

現行環境

DB サーバにセキュリティパッチをあてるべく Server6 を立ち上げ

Page 74: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

74

まず 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 75: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

75

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

まず Immutable Infrastructure の勉強

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

ロードバランサー

Server 4アプリサー

Server 5アプリサー

バServer 6

DB サーバ

Server 8アプリサー

Server 9アプリサー

バServer 6

DB サーバServer 7

アプリサーバ

現行環境

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

古い環境

Page 76: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

76

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

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

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

もったいないよね。

Page 77: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

77

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

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

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

Page 78: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

78

ここでコンテナの登場!

ハードウェア

ホスト OS

ハイパーバイザー

ゲスト OS

プロセス

プロセス

ゲスト OS

プロセス

プロセス

ハードウェア

ホスト OS

プロセス

プロセス

プロセス

プロセス

完全仮想化 コンテナ

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

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

Page 79: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

79

ここでコンテナの登場!

ハードウェア

ホスト OS

ハイパーバイザー

ゲスト OS

プロセス

プロセス

ゲスト OS

プロセス

プロセス

ハードウェア

ホスト OS

プロセス

プロセス

プロセス

プロセス

完全仮想化 コンテナ

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

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

VPS・仮想サーバ

ゲスト OS

プロセス

プロセス

プロセス

プロセス

コンテナ

Page 80: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

80

Docker の紹介

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

それを手軽にしたのが Docker

Page 81: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

81

Docker の紹介

コンテナサーバー1

コンテナサーバー2

コンテナサーバー3

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

LXCDocker

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

Page 82: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

82

ではインストール

$ 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 83: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

83

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

$ 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 84: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

84

Docker を使う

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

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

TTY を利用できるようにする

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

Page 85: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

85

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

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

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

Page 86: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

86

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 87: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

87

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$

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

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

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

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

Page 88: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

88

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

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

通常のサーバ docker の場合

/sbin/init

httpd

sshd

bash

ps

bash

ps

httpdCGI

CGI

sshd

bash

Page 89: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

89

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

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

Docker イメージCentOS

Docker コンテナ

Docker コンテナ

Docker コンテナ

Docker コンテナ

docker run

docker run

docker run

docker run

相互に干渉はしない

Page 90: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

90

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

$ 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 91: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

91

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

$ 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 92: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

92

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

コンテナc1ae0d1372d8

イメージcentos: latest

docker run

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

Page 93: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

93

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

コンテナc1ae0d1372d8

コンテナ15cb2a03c788

コンテナd7580743d875

イメージcentos: latest

docker run

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

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

Page 94: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

94

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

コンテナc1ae0d1372d8

コンテナ15cb2a03c788

コンテナd7580743d875

イメージcentos:test

イメージcentos: latest

docker run

docker commit

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

commit して、イメージ化する

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

作られる

Page 95: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

95

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

コンテナc1ae0d1372d8

コンテナ15cb2a03c788

コンテナd7580743d875

イメージcentos:test

イメージcentos: latest

docker run

docker commit

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

commit して、イメージ化する

コンテナ45e540c71952

docker run

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

作られる

Page 96: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

96

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

最初に実行したコマンドが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 97: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

97

LAMP 環境を作ってみよう

Page 98: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

98

Docker による LAMP環境作成

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

monit

docker

Apache fluentd sshd

Docker コンテナ

MySQL

Page 99: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

99

インストール手順( 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 100: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

100

インストール手順( 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 101: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

101

インストール手順( 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 102: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

102

起動する

$ 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 103: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

103

起動する

$ 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 104: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

104

monit へアクセスしてみる

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

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

Page 105: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

105

phpMyAdmin でアクセスしてみる

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

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

Page 106: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

106

構築完了

ということで

構築完了しました!

Page 107: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

107

ここから

ちょっとデモやります

Page 108: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

108

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

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

※詳細は後ろの方にいる、さくらの社員にお声がけください。

Page 109: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

109

あと

エンジニアを募集しています!

※詳細はブースにいる、さくらの社員にお声がけください。

Page 110: OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~

110

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

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

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