プライベート dockerdcworkshop.github.io/201411/materials/kato-dc_workshop_201411… · docker...
TRANSCRIPT
![Page 1: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/1.jpg)
石川ハイテク交流センター2014 DataCenter とソフトウェア開発ワークショップ
プライベート Docker コンテナの運用について
2014-11-21加藤 真透
1
![Page 2: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/2.jpg)
目次❖ 第1部
❖ プライベートDockerの利用
❖ 第2部
❖ 多数の Docker コンテナを運用する場合のパフォーマンス改善
❖ まとめ
2
![Page 3: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/3.jpg)
第1部
プライベートDockerの利用
3
![Page 4: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/4.jpg)
Docker とはなにか❖ Docker社が開発するオープンソースのコンテナー管理ソフトウェアの1つである。
❖ LXC(LinuxContainers)によりLinux上に隔離された環境を作り出し、ホストの環境に影響を及ぼさずにアプリケーションの実行ができる。
❖ OSやアプリケーションの導入済みLinux環境を丸ごとイメージ(以降 Docker イメージ)として保存し共有する機能がある。
4
![Page 5: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/5.jpg)
Docker Hubとは
❖ Docker イメージを保存し共有するサービスが Docker Hub である。
❖ https://hub.docker.com/ にて Docker社が運営している。
❖ Docker Hub 上で共有されるイメージは基本的に パブリック で、誰でも利用することができる。
❖ Docker は Docker Hub との連携を前提に作られている。
5
![Page 6: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/6.jpg)
Docker Hub 利用図
6
![Page 7: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/7.jpg)
Docker Hub の制約
❖ 基本的には パブリック であるため、プライベート な利用ができない。
❖ 独自のアプリケーションや設定を導入したカスタムイメージであっても、公開されてしまう。
❖ 非公開なカスタムイメージを運用する場合には、 プライベート な Repository が欲しい。
7
![Page 8: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/8.jpg)
プライベート Repository の利用方法
❖ Docker Hub の 有料プランを契約する。
❖独自の Repository を準備する。
8
![Page 9: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/9.jpg)
方法1 有料プランの利用
❖ Docker Hubには有料プランで、 プライベート な
Repositoryを提供している。
❖ https://registry.hub.docker.com/plans/ より抜粋
❖ 1 Repository $0/Month
❖ 10 Repository $12/Month
❖ 50 Repository $50/Month
9
![Page 10: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/10.jpg)
方法1 有料プランの利用❖ メリット
❖ 通常の Docker 利用方法と変わりなく利用可能。❖ イメージ保存のディスク容量を気にしなくて良い。
❖ デメリット❖ インターネットを経由した Docker Hub へのアクセス・認証を必要とする。
❖ Docker Hub の死活にサービスが左右される。❖ 費用がかかる。
10
![Page 11: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/11.jpg)
利用手順 - 契約
❖ https://hub.docker.com/ にてアカウントを作成
❖ My Repositories Pages にて、作成できるプライベート
Repositoriesの数がでている(無料では1)。
❖ BuyMoreとあるので、そのページから Plan を Upgrade することで、数を増やすことができる。
11
![Page 12: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/12.jpg)
利用手順 - push❖ Repositoryのページに移動し、+ Add Repository
❖ NamespaceとRepository Name を決める。
❖ Repository Type に Private を選択。
❖ 以下のコマンドでpush (IDとpasswordを入力)
docker push <Namespace>/<repository name> ❖ <Namespace>/<repository name> 決めたものを入力
12
![Page 13: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/13.jpg)
利用手順 - pull/run
❖ 以下のコマンドでpull (IDとpasswordを入力)
docker pull <Namespace>/<repository name>
docker run <Namespace>/<repository name> ❖ <Namespace>/<repository name> pushしたものを入力
13
![Page 14: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/14.jpg)
方法2 独自 Repository の運用❖ Docker社が、プライベート Repository を運用するための Docker Registry というソフトウェアを配付している。
❖ Docker Registry 自身も Docker イメージとして提供されている。
❖ これを用いることで、ローカルな環境上に Docker イメージを共有するインフラを作ることができる。
14
![Page 15: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/15.jpg)
方法2 独自Repositoryの運用図
15
![Page 16: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/16.jpg)
方法2 独自 Repository の運用❖ メリット
❖ インターネットに接続できない環境でも利用可能。❖ Docker Hub の死活に影響されない。❖ 費用がかからない。(ランニングコストは別)
❖ デメリット❖ Docker イメージの利用方法に一部制限がある。(イメージ名にホスト名が含まれる)
❖ ディスク容量を使う。(Docker Registry を駆動させる環境を準備する必要がある)
16
![Page 17: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/17.jpg)
利用手順 -セットアップ❖ Docker Registry セットアップ手順
❖ Docker Registry 自体も Docker イメージとして提供されている。
❖ 以下のコマンドで動作させることができる。docker run -d -p 5000:5000 registry
-d : デーモンモード-p : ポートの転送設定registry : Docker Registry の Docker イメージ名
17
![Page 18: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/18.jpg)
利用手順 - push❖ ホスト名とポートを指定し、そのRepositoryへイメージを
pushできる。
docker push <registry host>[:<port>]/<image name> ❖ <registry host> : Docker Registry を駆動させたホスト名
❖ <port> : ポート番号
❖ <image name>: 保存するイメージ名
❖ 例 ) docker push www1.local:5000/webapp_service
18
![Page 19: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/19.jpg)
利用手順 - pull/run❖ 同じく、ホスト名とポートを指定し、pull/runすることができる。
docker pull <registry host>[:<port>]/<image name>
docker run <registry host>[:<port>]/<image name> ❖ <registry host> : Docker Registry を駆動させたホスト名
❖ <port> : ポート番号
❖ <image name>: pull/runするイメージ名
❖ 例 ) docker pull www1.local:5000/webapp_service
19
![Page 20: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/20.jpg)
第2部
多数の Docker コンテナを運用する場合のパフォーマンス改善
20
![Page 21: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/21.jpg)
docker pull ボトルネック❖ 全Docker Hostが1つのRegistryよりDockerイメージを
pullすることで以下の様な現象がおきる。
❖ サイズの大きなイメージファイルをダウンロードするために
❖ コンテナが動作し始めるまでの遅延が増える。
❖ 大量のネットワークリソースとディスクリソースが使われる。
21
![Page 22: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/22.jpg)
docker pull ボトルネック図
22
![Page 23: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/23.jpg)
解決案
❖事前pull方式の導入。
❖キャッシュシェア方式の導入。
23
![Page 24: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/24.jpg)
改善案1 事前pull方式図
24
![Page 25: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/25.jpg)
改善案1 事前pull方式❖ 必要になる前にあらかじめ、Dockerイメージをpullしておく。
❖ メリット
❖ イメージを事前にキャッシュするため、コンテナ駆動時には pull が発生しないため駆動時の遅延を抑えることができる。
❖ デメリット
❖ 使わないイメージも転送しうるため、余計なネットワークリソースとディスクリソースを利用する可能性がある。
25
![Page 26: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/26.jpg)
改善案2 キャッシュシェア方式図
26
![Page 27: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/27.jpg)
改善案2 キャッシュシェア方式❖ メリット
❖ 各Docker Host が個別にイメージを取得する必要がないため、ネットワークリソース、ディスクリソースを節約することができる。
❖ デメリット❖ 計画的な pull スケジューリングが必要。
❖ Docker イメージのコンフリクトを抑止するため。❖ 必要な時に必ずキャッシュを存在させるため。
❖ コンテナの駆動速度が遅くなる場合がある。❖ 共有ディスクのパフォーマンスがボトルネックになる可能性があるため。
27
![Page 28: プライベート Dockerdcworkshop.github.io/201411/materials/kato-DC_WorkShop_201411… · Docker Hub の制約 基本的には パブリック であるため、プライベート](https://reader034.vdocuments.pub/reader034/viewer/2022042806/5f722b55cb2b655f7110df51/html5/thumbnails/28.jpg)
まとめ
❖ Docker と Docker Hub について解説した。❖ プライベート な Repository の運用方法を提示した。❖ Docker イメージの配布方法の改善について考察した。
❖ ボトルネックが存在することを示し、解決方法の以下2種を示した。❖ 改善案1. 事前pull方式。❖ 改善案2. キャッシュシェア方式。
28