10

TM2.6 CoreOSを導入してみる..... 14 2.7 CoreOSの評価..... 16 v 目次 第3章 注目すべきDockerの周辺技術PanamaxとKubernetes..... 17 3.1 Panamax..... 19 3.2 Panamaxの

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: TM2.6 CoreOSを導入してみる..... 14 2.7 CoreOSの評価..... 16 v 目次 第3章 注目すべきDockerの周辺技術PanamaxとKubernetes..... 17 3.1 Panamax..... 19 3.2 Panamaxの
Page 2: TM2.6 CoreOSを導入してみる..... 14 2.7 CoreOSの評価..... 16 v 目次 第3章 注目すべきDockerの周辺技術PanamaxとKubernetes..... 17 3.1 Panamax..... 19 3.2 Panamaxの

• 本書は、インプレスが運営するWebメディア「Think IT」で、「Dockerを知る -周辺ツールと業界動向-」および「より深くDockerを知る」として連載された技術解説記事を電子書籍およびオンデマンド書籍として再編集したものです。

• 本書の内容は、執筆時点までの情報を基に執筆されています。紹介したWebサイトやアプリケーション、サービスは変更される可能性があります。

• 本書の内容によって生じる、直接または間接被害について、著者ならびに弊社では、一切の責任を負いかねます。

• 本書中の会社名、製品名、サービス名などは、一般に各社の登録商標、または商標です。なお、本書では©、®、 TMは明記していません。

Page 3: TM2.6 CoreOSを導入してみる..... 14 2.7 CoreOSの評価..... 16 v 目次 第3章 注目すべきDockerの周辺技術PanamaxとKubernetes..... 17 3.1 Panamax..... 19 3.2 Panamaxの

はじめに

近年仮想化技術の目覚ましい発展により、エンジニアの開発環境の準備はスピーディーかつ容

易に行われることが求められる様になりました。また、開発環境と本番環境の環境的差異による

不整合の発生等、様々な問題が山積しているのが現状です。これらの課題を解決する可能性を持

つ技術「Docker」について網羅的にご紹介しているのが本書となります。

「Docker」は本書執筆時 (2014/12-2015/06) に IT 技術者の中で特段注目を置かれている技術

として名を連ねており、様々な技術者が次世代を担う技術に成長することを期待を込めて情報を

追っている現状です。本書では、Docker とはなにか、Docker がなぜ注目されているのかといっ

た基本的なことから、運用する上で利便性の高いツール群の紹介、更には他の類似技術との性能

比較などの解説も盛り込んでおります。

本書は、これから Docker を触る方や導入を検討している方、既に触っているがより深く知り

たい方にとってご一読する価値のある内容となっております。Docker の情報書としてご活用く

ださい。

2015 年 7 月 著者一同

本書の内容について本書の内容は執筆時点のものであり、最新のバージョンとは動作が異なる場合がございます。

各章に検証時のバージョンを記載しておりますのでご注意ください。

iii

Page 4: TM2.6 CoreOSを導入してみる..... 14 2.7 CoreOSの評価..... 16 v 目次 第3章 注目すべきDockerの周辺技術PanamaxとKubernetes..... 17 3.1 Panamax..... 19 3.2 Panamaxの
Page 5: TM2.6 CoreOSを導入してみる..... 14 2.7 CoreOSの評価..... 16 v 目次 第3章 注目すべきDockerの周辺技術PanamaxとKubernetes..... 17 3.1 Panamax..... 19 3.2 Panamaxの

目 次

はじめに ...................................................................................................................... iii

第1章 Dockerが注目されている理由を探る .............................................. 11.1 Dockerとは....................................................................................................... 11.2 サーバ仮想化方式ごとの特徴比較.......................................................................... 21.3 サーバ仮想化範囲から見る相違点.......................................................................... 31.4 Dockerの特徴 ................................................................................................... 41.5 Dockerのメリット ............................................................................................. 51.6 Dockerのデメリット.......................................................................................... 51.7 Dockerの使い道 ................................................................................................ 61.8 Dockerの魅力を探る.......................................................................................... 7

第2章 Dockerをより良く使うための3つの周辺技術................................. 92.1 Dockerの周辺技術 ............................................................................................. 92.2 ツールを組み合わせることのメリット ................................................................. 102.3 ツールを組み合わせることのデメリット .............................................................. 102.4 周辺技術一覧 ..................................................................................................... 112.5 Core OS .......................................................................................................... 132.6 CoreOSを導入してみる ................................................................................... 142.7 CoreOSの評価 ................................................................................................ 16

v

Page 6: TM2.6 CoreOSを導入してみる..... 14 2.7 CoreOSの評価..... 16 v 目次 第3章 注目すべきDockerの周辺技術PanamaxとKubernetes..... 17 3.1 Panamax..... 19 3.2 Panamaxの

目次

第3章 注目すべきDockerの周辺技術 PanamaxとKubernetes......... 173.1 Panamax ........................................................................................................ 193.2 Panamaxの導入 .............................................................................................. 203.3 Panamaxの評価 .............................................................................................. 233.4 Kubernetes..................................................................................................... 243.5 Kubernetes独自の「用語」 ............................................................................. 253.6 Kubernetesの機能 .......................................................................................... 263.7 Kubernetesの評価 .......................................................................................... 263.8 Docker関連ツールの今後 ................................................................................. 27

第4章 Dockerを取り巻く各社の状況を見る ........................................... 294.1 はじめに ........................................................................................................... 294.2 Googleの動向 .................................................................................................. 294.3 Microsoftの動向.............................................................................................. 304.4 Red Hatの動向 ................................................................................................ 314.5 VMwareの動向 ................................................................................................ 314.6 Docker社の動向 .............................................................................................. 324.7 投資家も注目する Docker ................................................................................. 324.8 各社の動向を踏まえて ........................................................................................ 33

第5章 Docker専用の軽量OS 主要3種を比較する ................................ 355.1 Dockerをより効率的に利用するための技術 ....................................................... 355.2 Docker専用軽量 OSに共通した特徴 ................................................................. 365.3 比較する Docker専用軽量 OS .......................................................................... 375.4 CoreOS ........................................................................................................... 385.5 Project Atomic............................................................................................... 385.6 Snappy Ubuntu Core ..................................................................................... 405.7 軽量 OSを比較する ........................................................................................... 405.8 まとめ............................................................................................................... 41

第6章 ベアメタル環境とDockerコンテナ環境の性能比較 ....................... 436.1 コンテナ環境とベアメタル環境の差異 ................................................................. 43

vi

Page 7: TM2.6 CoreOSを導入してみる..... 14 2.7 CoreOSの評価..... 16 v 目次 第3章 注目すべきDockerの周辺技術PanamaxとKubernetes..... 17 3.1 Panamax..... 19 3.2 Panamaxの

目次

6.2 検証環境 ........................................................................................................... 436.3 テストシナリオ.................................................................................................. 456.4 検証 .................................................................................................................. 466.5 Diskの負荷を検証する ...................................................................................... 486.6 まとめ............................................................................................................... 51

第7章 KubernetesとMesos:Dockerのスケジューリングツールの違いを理解する ................................................................................. 53

7.1 注目される Dockerのスケジューリングツール ................................................... 537.2 Kubernetes vs. Mesos .................................................................................. 547.3 Kubernetesの使いどころ ................................................................................ 557.4 Mesosの使いどころ......................................................................................... 567.5 Kubernetesと Mesosを組み合わせる............................................................. 567.6 その他の Dockerスケジューリングツール.......................................................... 57

第8章 Dockerコンテナのパフォーマンス劣化とチューニング.................. 598.1 はじめに ........................................................................................................... 598.2 ストレージドライバとは..................................................................................... 598.3 ホスト環境準備.................................................................................................. 618.4 Dockerコンテナ準備........................................................................................ 618.5 テスト項目 ........................................................................................................ 628.6 テスト 1:基準となるデータの測定 .................................................................... 638.7 テスト 2:Dockerの仮想 Disk領域を別の物理ディスクに置き換える ................. 648.8 テスト 3:コンテナで利用する一部のファイルをホスト OSへ切り出す ................ 688.9 テスト 4:コンテナを RedmineとMySQLの 2つに分離してみる ..................... 708.10 テスト 5:Apacheのチューニングを実施する ................................................. 728.11 まとめ ............................................................................................................ 74

第9章 Dockerと Linux OSのリソース共有状況の調査.......................... 799.1 調査対象とした Linuxディストリビューション ................................................... 799.2 調査対象項目および検証方法 .............................................................................. 809.3 コンテナ上のファイル格納方法 ........................................................................... 80

vii

Page 8: TM2.6 CoreOSを導入してみる..... 14 2.7 CoreOSの評価..... 16 v 目次 第3章 注目すべきDockerの周辺技術PanamaxとKubernetes..... 17 3.1 Panamax..... 19 3.2 Panamaxの

目次

9.4 ディスク容量の制限をテストしてみる ................................................................. 849.5 inode数の制限をテストしてみる ....................................................................... 909.6 メモリ使用量の制限をテストしてみる ................................................................. 939.7 プロセス数の制限をテストしてみる .................................................................... 959.8 総括 .................................................................................................................. 97

viii

Page 9: TM2.6 CoreOSを導入してみる..... 14 2.7 CoreOSの評価..... 16 v 目次 第3章 注目すべきDockerの周辺技術PanamaxとKubernetes..... 17 3.1 Panamax..... 19 3.2 Panamaxの

第1章 Dockerが注目されている理由を探る

1.1 DockerとはDocker とは、Docker 社*1が開発しているオープンソースのコンテナ型仮想化ソフトウェア

である。Linux 上で LXC(Linux Container)の技術を活用し、コンテナ型の仮想環境を作成す

るものだ。

Docker の主な特徴は、以下の通りである。

1. コンテナはカーネル部分をベースの OS と一部共有するため、リソース使用量が非常に少

ない

2. Docker 社が用意しているリポジトリ(DockerHub)に、構築済みのコンテナイメージが

多種多様にあるので、構築作業が不要な場合が多い。

3. コンテナの作成からプロダクトのインストール・設定するまでの手順を、“Dockerfile”と

いうテキストファイルに定義できる(インフラのコード化)この Dockerfile を用いること

で、Docker が導入されている環境であればどこであっても、準備した環境を稼働させら

れるため、携帯性が高くなる。

これらの特徴から Docker 環境では一台のサーバで多数のコンテナを同時に実行したり、実行

していたコンテナを別環境で稼働させたりすることが可能だ。

*1 https://www.docker.com/

1

Page 10: TM2.6 CoreOSを導入してみる..... 14 2.7 CoreOSの評価..... 16 v 目次 第3章 注目すべきDockerの周辺技術PanamaxとKubernetes..... 17 3.1 Panamax..... 19 3.2 Panamaxの

第 1章 Dockerが注目されている理由を探る

1.2 サーバ仮想化方式ごとの特徴比較コンテナ型の仮想化と、ハイパーバイザ型やホスト型の仮想化とは、どのような点が異なるの

だろうか。まずは仮想化の方式の違いから見ていこう。

表 1.1 仮想化方式の違い

 コンテナ型仮想化(Docker)

ハイパーバイザ型仮想化(VMWare ESXi)

ホスト型仮想化(Linux KVM)

仮想マシン OS 部分を一部ホスト OS と共有するため、VM ごとにOS インストールをする必要はない

VM ごとに OS をインストールする必要がある

VM ごとに OS をインストールする必要がある

稼働 OS の種類Linux のみ稼働可能Windows は現状稼働しない Windows、Linux、一部の

Unix も稼働可能Windows、Linux、一部のUnix も稼働可能

利用開始までの時間 OS インストール不要なので、利用開始までの時間が短い

初回構築時にはネットワーク・OS インストール等の作業が発生するため、利用開始までの時間が長い

初回構築時にはネットワーク・OS インストール等の作業が発生するため、利用開始までの時間が長い

ネットワーク 標準では、ホスト側に作成された Docker 専用の NIC としか通信出来ない

ネットワークの作成が可能で、VM にも任意の数のvNIC を付与可能

ネットワークの作成が可能で、VM にも任意の数のvNIC を付与可能

リソース 標準では HDD リソースの指定が出来ない。CPU、メモリについてはリソース割り当て上限を指定可能

CPU、メモリ、HDD のリソースについて割り当てを指定する必要がある

CPU、メモリ、HDD のリソースについて割り当てを指定する必要がある

オーバーヘッド コンテナはホスト OS から見ると単一のプロセスであり、オーバーヘッドはほぼない

VM から機器までのアクセス経路がハイパーバイザのみなので、ホスト型仮想化に比べるとオーバーヘッドは少ない

VM から機器までのアクセス経路が他の仮想化技術に比べ長いため、比較した場合には一番オーバーヘッドが大きくなる

各方式の特徴は、以下の通りだ。

コンテナ型仮想化コンテナ型仮想化は、ホスト OS 上でコンテナプロセスが実行されており、その上にコンテナ

が立ち上がってアプリケーションが実行される。他の方式との相違点として、コンテナはホスト

OS から見ると一つのプロセスとして認識されている点が挙げられる。またコンテナは、ホスト

OS のカーネル部分を共有するため、各コンテナには OS は導入されていない。

2