いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪

11,436 views

Published on

2014年11月14日に開催された、第5回コンテナ型仮想化の情報交換会@大阪において使った資料です。
Immutable Infrastructureの説明とDockerの説明をしています。

Published in: Technology

いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪

  1. 1. (C)Copyright  1996-‐‑‒2014  SAKURA  Internet  Inc. いまさら聞けない  Docker コンテナ技術&Immutable  InfrastructureとDockerをまなぶ 2014/11/14  第5回コンテナ型仮想化の情報交換会@⼤大阪 さくらインターネット株式会社  ⽥田中邦裕 @kunihirotanaka
  2. 2. ⾃自⼰己紹介 ⽥田中邦裕 •  1978年年⼤大阪⽣生まれ •  1996年年にさくらインターネットを創業 •  1998年年、舞鶴⾼高専卒 •  学⽣生時代の活動:ロボコン・吹奏楽 •  Twitter:  kunihirotanaka
  3. 3. 趣味 3 •  プログラミング – さくらのクラウドも最初は個⼈人で作ってました – 昔はApacheドキュメント翻訳やってました – いわゆるジェネレーター系サイトやってます •  旅⾏行行&鉄道・電⼦子⼯工作・DTM http://apache.jp
  4. 4. 4
  5. 5. ホスティング中⼼心の⼤大阪&⽯石狩+ハウジング中⼼心の東京 様々なサービスが集約できる 国内最⼤大級の拡張性を持つ郊外型データセンター 郊外型データセンター オフィス⾄至近、豊富な配信実績を持つ 都市型データセンター 都市型データセンター ⽯石狩 東京 ⼤大阪 ●⽤用途   ハウジング、ホスティング、クラウド ●総ラック数   2,650基(2013年年9⽉月現在) ●顧客数   340,000件(2013年年4⽉月現在) データセンターの紹介
  6. 6. 売上の推移 近年年は、クラウド・ホスティングサービスの売上割合が増加 6 0 20 40 60 80 100 07年年 08年年 09年年 10年年 11年年 12年年 13年年 14年年 (単位:億円) コロケーション ホスティング その他
  7. 7. やることとやらないこと •  やること – ホスティング – クラウド – その他インターネットサービス •  やらないこと – SI – ⼈人材派遣 – 請負開発 – MSP – システムのパッケージ販売 ここはパートナー様と共に
  8. 8. 数字で⾒見見るさくらインターネット(四半期決算) 8 (⾦金金額:百万円) サービス名 ‘14/3期 ‘15/3期 前四半期⽐比 Q1会計 Q2会計 Q3会計 Q4会計 Q1会計 Q2会計 増減額 増減率率率 ハウジング 805 790 794 728 685 661 ▲24 ▲3.6   構成⽐比 32.6 31.9 31.3 28.5 26.9 25.7 専⽤用サーバ 694 671 657 657 662 669 6 1.0   構成⽐比 28.1 27.1 26.0 25.7 26.0 26.0 レンタルサーバ 517 537 548 565 570 581 11 1.9   構成⽐比 20.9 21.7 21.6 22.1 22.4 22.6 VPS・クラウド 260 286 319 360 412 455 42 10.3   構成⽐比 10.5 11.5 12.6 14.1 16.2 17.7 その他 195 192 214 247 215 209 ▲6 ▲2.9   構成⽐比 7.9 7.8 8.5 9.7 8.5 8.1 ハウジングは減り、VPS・クラウドは⼤大きな伸び 専⽤用サーバは2014年年初頭から持ち直している。
  9. 9. Dockerを知る前に 9
  10. 10. サーバ管理理の⽅方法論論を⾒見見てみる 10 •  SSHを使った⼀一⻫斉変更更  →  超属⼈人的(ex:copy-‐‑‒tanaka.pl) •  構成管理理ツールの利利⽤用  →  冪等性⾯面倒 – Chef  /  Ansible  /  Puppet •  変更更毎に新しい環境を作る  →  お⾦金金かかる – Immutable  Infrastructure http://apache.jp
  11. 11. Immutable Infrastructureについて 11 •  セットアップした環境は書き換えない •  新しい設定の環境を都度度作る 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 アプリサー バ 古い環境 現⾏行行環境 新しい環境
  12. 12. Immutable Infrastructure(II)な時のサーバ設定変更更⽅方法 12 http://apache.jp Server1 abc.com Server1 abc.com def.com Server1 abc.com def.com ghj.com Server1 abc.com Server2 abc.com def.com Server3 abc.com def.com ghj.com 変更更 変更更 切切り換え 従来のやり⽅方 Immuta…(略略)の場合 破棄 破棄
  13. 13. Blue-Green Deploymentについて 13 http://apache.jp引⽤用:Publickey  「Blue-‐‑‒Green  Deployment」とは何か、マーチン・ファウラー⽒氏の解説 http://www.publickey1.jp/blog/14/blue-‐‑‒green_̲deployment.html 2つの環境は異異なったものだが、可能な限り同じにしておく必要がある。 それらは異異なったハードウェアだったり、同⼀一マシン上の(あるいは 別のマシン上の)仮想マシンだったり、あるいは同⼀一OS上で異異なるIP アドレスを持った別のゾーンであったりもするだろう。
  14. 14. Immutable  Infrastructureの実現⽅方法 14
  15. 15. 完全仮想化とコンテナとの違い 15 ハードウェア ホストOS ハイパーバイザー ゲストOS プロセス プロセス ゲストOS プロセス プロセス ハードウェア or VPSインフラ・仮想サーバ ホストOS or ゲストOS プロセス プロセス プロセス プロセス 完全仮想化の場合 コンテナの場合 •  コンテナの場合、ハイパーバイサーが⼊入らない •  またカーネルは共⽤用でユーザ空間が分離離される 仮想サーバ・VPSが提供するインフラはこの部分 仮想サーバ 仮想サーバ コンテナ コンテナ コンテナ
  16. 16. システムコンテナとアプリケーションコンテナ 16 •  システムコンテナ – OSまるごとコンテナ内で実⾏行行 – PID=1はinitが担う – 通常のサーバのように⾒見見える – VPSとして販売するケースも(JoesCloudさんなど) •  アプリケーションコンテナ – コマンド(アプリケーション)だけをコンテナ化 – PID=1は各コマンドになる – 実⾏行行が軽い – デーモンを実⾏行行してもコンテナは即終了了してしまう – Dockerはアプリケーションコンテナに近い
  17. 17. Dockerのメリット 17 •  簡単 – コンテナ基盤やファイルシステムなどがセットに なっている – イメージの管理理が楽 – 標準イメージも多数⽤用意されている – Dockerファイルによる⾃自動化 •  技術⾯面 – 既存の⽐比較的枯れた技術を多⽤用 •  cgroups  /  aufs  /  LXC-‐‑‒>libcontainer  ほか – リソース消費が完全仮想化より少なく、より⾼高速
  18. 18. Dockerを使ってみる 18
  19. 19. Dockerのインストール 19 •  CentOSの場合はyum⼀一発 $  sudo  yum  update  -‐‑‒y $  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  start Starting  cgconfig  service:                                                                  [    OK    ] Starting  docker:                                                                                      [    OK    ] http://apache.jp
  20. 20. Dockerイメージの取得 20 •  pullで取得 $ sudo docker pull centos Pulling repository centos 5a1ebaa356ff: Download complete 70214e5d0a90: Download complete 68eb857ffb51: Download complete 511136ea3c5a: Download complete 34e94e67e63a: Download complete •  imagesで確認 $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos centos5 5a1ebaa356ff 2 days ago 484 MB http://apache.jp
  21. 21. 実⾏行行 21 •  runで実⾏行行 $ sudo docker run -t centos /bin/bash -c "cat /etc/redhat-release && ps aux && ip addr show eth0" CentOS Linux release 7.0.1406 (Core) USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 11552 1360 ? Ss+ 06:37 0:00 /bin/bash - c cat /etc/redhat-release && ps aux && ip addr show eth0 root 10 0.0 0.0 19696 1236 ? R+ 06:37 0:00 ps aux 98: eth0: <NO-CARRIER,BROADCAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000 link/ether 5e:0e:94:40:4c:8b brd ff:ff:ff:ff:ff:ff inet 172.17.0.2/16 scope global eth0 inet6 fe80::5c0e:94ff:fe40:4c8b/64 scope link tentative valid_lft forever preferred_lft forever •  実⾏行行するたびに環境は作り直される http://apache.jp
  22. 22. Docker実⾏行行の仕組み 22 http://apache.jp コンテナ c1ae0d1372d8 コンテナ 15cb2a03c788 コンテナ d7580743d875 イメージ centos:test イメージ centos:  latest docker  run docker  commit runするたびに、新しいコンテナが⽣生成される commitして、イメージ化する コンテナ 45e540c71952 docker  run •  Runする度度に新しいユーザ空間が作成される – 実⾏行行した結果を再利利⽤用する際はcommitして新しいイ メージを作る – Gitのように環境のバージョン管理理ができる
  23. 23. コミット 23 •  psで、実⾏行行終了了したコンテナのIDを取得 $ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 774a4e8b0840 centos:centos6 /bin/bash -c ‘cat /e 12 minutes ago Exited (0) 12 minutes ago tender_morse •  commitでイメージをコミット $ sudo docker commit 41b2bc26a2da my:test1 11833a8fa7f9ded35f5d91156a80ce23c1badbab18cb2d555 $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE my test1 11833a8fa7f9 8 seconds ago 224 MB  
  24. 24. コミットしたイメージからの実⾏行行 24 •  さっき作ったtest1から実⾏行行 $ sudo docker run -t my:test1 /bin/bash -c "ps aux" USER PID %CPU %MEM VSZ RSS STAT START TIME COMMAND root 1 0.0 0.0 17596 1024 Rs+ 07:19 0:00 ps aux •  実⾏行行結果を確認 $ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 44100667c5d0 my:test1 /bin/bash -c 'ps aux 13 seconds ago Exited (0) 12 seconds ago cranky_engelbart
  25. 25. 最後に •  求⼈人しています。 •  さくらのクラウドの無料料クーポンあります •  さくらのナレッジでも紹介しています –  執筆者も募集中です! 25

×