狠狠撸

狠狠撸Share a Scribd company logo
骋肠辫て?诲辞肠办别谤
顿辞肠办别谤してますか?
アジェンダ
Dockerとは?
GCP(Google Cloud Platform)でDockerの利用
GKE(Google Container Engine)の説明
GKEを実際に使ってみる
まとめ
自己紹介
Koda といいます
「Web」「Cloud」の開発者です
OSSの情報共有サービス「Knowledge」を公開してます
顿辞肠办别谤をとりまく状况
Amazon Web Services(AWS)は米国時間12月21日、「Amazon EC2 Container
Registry(ECR)」の一般提供を開始したと発表した。このサービスを利用することで、同社
のクラウドプラットフォーム上における「Docker」コンテナイメージの保存や管理、配備を容
易にするための、完全マネージド型のDockerコンテナレジストリが提供される。
MicrosoftとDockerがWindows Server Containersを事前公開
Windows専用のソフトウェアをコンテナ内で実行することが可能になった。 Windows Server
2016 Technical Preview 3 は,このテクノロジを最初にサポートするWindowsリリースだ。
Windows Server Containersは,Linuxのコンテナとほぼ同じ機能を,Windowsエコシステ
ムの環境で実現する。Dockerもまた,独自のテクニカルプレビューをリリースして,Windows
コンテナの管理機能を紹介している。
[速報]Google Container Engine発表。Dockerコンテナを実行しKubernetesで管理す
るクラウドサービス
Googleは11月4日(日本時間5日)、サンフランシスコでイベント「Google Cloud
Platform Live」を開催。Dockerコンテナ上でアプリケーションを実行し、それを
Kubernetesで管理するクラウドサービス、「Google Container Engine」(略称はGKE。
Google Compute Engineの略称GCEとかぶるためにGKEになったのだと思われます)を
発表しました。
レッドハット、DockerベースのPaaS基盤「OpenShift Enterprise 3」を出荷
レッドハットは2015年7月22日、仮想マシンを使わずにDockerベースでPaaS型クラウドを
実現する基盤ソフト「OpenShift Enterprise 3」を発表、同日出荷した。
Amazon Web Services(AWS)は米国時間12月21日、「Amazon EC2 Container
Registry(ECR)」の一般提供を開始したと発表した。このサービスを利用することで、同社
のクラウドプラットフォーム上における「Docker」コンテナイメージの保存や管理、配備を容
易にするための、完全マネージド型のDockerコンテナレジストリが提供される。
MicrosoftとDockerがWindows Server Containersを事前公開
Windows専用のソフトウェアをコンテナ内で実行することが可能になった。 Windows Server
2016 Technical Preview 3 は,このテクノロジを最初にサポートするWindowsリリースだ。
Windows Server Containersは,Linuxのコンテナとほぼ同じ機能を,Windowsエコシステ
ムの環境で実現する。Dockerもまた,独自のテクニカルプレビューをリリースして,Windows
コンテナの管理機能を紹介している。
[速報]Google Container Engine発表。Dockerコンテナを実行しKubernetesで管理す
るクラウドサービス
Googleは11月4日(日本時間5日)、サンフランシスコでイベント「Google Cloud
Platform Live」を開催。Dockerコンテナ上でアプリケーションを実行し、それを
Kubernetesで管理するクラウドサービス、「Google Container Engine」(略称はGKE。
Google Compute Engineの略称GCEとかぶるためにGKEになったのだと思われます)を
発表しました。
レッドハット、DockerベースのPaaS基盤「OpenShift Enterprise 3」を出荷
レッドハットは2015年7月22日、仮想マシンを使わずにDockerベースでPaaS型クラウドを
実現する基盤ソフト「OpenShift Enterprise 3」を発表、同日出荷した。
激アツ!
いろいろなクラウド基盘がありますが
どこでも使えます
骋肠辫て?诲辞肠办别谤
Dockerとは?
コンテナ型の仮想化技術
VMware ESXiやLinux KVMなどは「ハイパーバイザー型
の仮想化」
Dockerは「コンテナー型の仮想化」
何が嬉しいの?
各コンテナは大きくリソースを使わない
マイクロサービスアーキテクチャと親和性が高い
コンテナイメージを一度作成してしまえばコピーが簡単
スケールできる
インフラ操作はDokcerfile(テキストファイル)で行う
Infrastructure as Code
ネイティブに環境構築
サーバーに直接データベースなどのアプリをインストールする
DBなどは共有して使う
ことも多く、気軽に
バージョンアップできない
同じ構成を作るのが
非常に大変
Server
Host OS
Bins/Libs
DB App2App1
VM
リソースが潤沢にあれば、
複数のバージョンを
起動できる
VMを大事に保守していく
イメージ
Server
Host OS
Hypervisor
GuestOS
Bins/Libs
DB1
GuestOS GuestOS
Bins/Libs
App2App1
Bins/Libs
Docker
Dockerでは、イメージの
リソースは非常に小さい
環境構築も高速
気軽にコンテナを
作成/削除
「環境」を使い捨てできる
Server
Host OS
Docker
Bins/Libs
DB1 App1
Bins/Libs
App2
Bins/Libs
VM vs Docker(Dockerの良いところ)
VM Docker
イメージのサイズ 大きい(?GB) 小さい(?MB)
起動時間 時間がかかる 素早い
インフラ管理 管理しづらい コードで管理
Infrastructure as Code
インフラを手動で構築すると、作業ミスが発生
インフラを手動で変更する場合も作業ミスが多い
インフラAとインフラBの構成が変わってきていて、Aの変更作業
をBで実施しても、同じようにうごかない
Dockerでは、イメージの構築手順はDockerfileというテキ
ストで管理する
Gitで差分管理できる
Vagrant vs Docker
VagrantもVagrantfileで環境構築をCodeで管理
VagrantはVM型/Dockerはコンテナ型
起動時間が数分/数秒
イメージの容量が数GB/数MB
# Dockerfile for Knowledge
FROM tomcat:jre8 ←Java+Tomcatをインストールしているイメージをベースに構築
# ==== dumb-init ====
ADD https://github.com/Yelp/dumb-init/releases/download/v1.0.0/dumb-
init_1.0.0_amd64 ?
/usr/local/bin/dumb-init
# ==== environment ====
RUN rm -rf /usr/local/tomcat/webapps/ROOT ?
&& update-ca-certificates -f ?
&& chmod +x /usr/local/bin/dumb-init ←RUNの後にLinuxコマンド実行
# ==== add Knowledge ====
ADD https://github.com/support-
project/knowledge/releases/download/v1.4.1/knowledge.war ?
/usr/local/tomcat/webapps/ROOT.war
VOLUME [ "/root/.knowledge" ]
EXPOSE 8080
CMD [ "/usr/local/bin/dumb-init", "/usr/local/tomcat/bin/catalina.sh", "run" ]
Dockerfileの例
作成済イメージの利用
Dockerfileを使って作成したコンテナイメージを登録する機能が
ある
Dockerリポジトリ
DockerHub(公開)/プライベートなリポジトリ
公開リポジトリにはイメージがいろいろある(MySQL、Tensorflow…)
それを取得(Pull)すれば環境構築完了
後は起動するだけ
Docker リポジトリ使いたいイメージを取得
するだけで環境構築完了
作成したイメージ
自分たちで作成したイメージを
リポジトリに登録して、環境を
配布することもできる
DockerでTensorFlow
Dockerがインストールされていれば、すぐに試すことが
できる
$ docker pull gcr.io/tensorflow/tensorflow
$ docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflow
開発機
①gitへソースをpush
CIサーバー
②CIでDockerイメージをBuild
③イメージを登録
CIとDocker
テストサーバー
④更新通知
⑤イメージをPull
CIとDockerを使った、環境自動更新の例
骋肠辫て?诲辞肠办别谤
Google Container Engine
DockerをGoogleのクラウドで簡単に使えるようにしたサー
ビス
略称はGKE。Google Compute Engineの略称GCEとかぶる
ためにGKEになったらしい
Google Compute Engine上にKubernetesのクラスタを
作成し、Dockerコンテナを配置可能
Amazon AWS / Microsoft Azureにも類似のサービスがある
ベンダロックインも無いので積極的に使っていける!
Kubernetesって?
Dockerのデプロイ/オーケストレーションツール
関連するコンテナのグルーピング
コンテナに割り振られるIPアドレスの管理
コンテナ間のネットワークルーティング管理
複数のコンテナを利用した負荷分散
コンテナに割り当てるストレージの管理
コンテナの監視
GKEのすごいところ
一度Dockerイメージを作って登録しておけば、クラスタ
管理してくれるので、Dockerイメージ単位(≒マイクロ
サービス)にオートスケールを行う
コンテナの死活監視もKubernetesが行ってくれるので、
運用が簡単
Google Container Engineの動作イメージ
DockerRepository
オートスケール
ロードバランス
骋肠辫て?诲辞肠办别谤
GKE用のツールをインストール
https://cloud.google.com/sdk/#Quick_Start
公式から「install.sh」を取得して、実行するだけ(Mac)
? 何も問題なく完了
Google Container Engine を利用開始
1. メニュー選択
2. コンテナクラスタ作成
骋肠辫て?诲辞肠办别谤
Google Container Engine に登録する
Dockerイメージを作成
それをGoogleのDockerリポジトリに登録
Kubernetesで起動?ロードバランス開始
$ docker build -t gcr.io/{project-id}/knowledge:v1.4.1 .
$ gcloud docker push gcr.io/{project-id}/knowledge:v1.4.1
$ kubectl run knowledge --image=gcr.io/{project-id}/knowledge:v1.4.1 --
port=8080deployment "knowledge" created
$ kubectl expose deployment knowledge --type="LoadBalancer" service
"knowledge" exposed
骋辞辞驳濒别のコンテナリポジトリに登録
アクセスしてみる
動いてる!
感想
感想
チュートリアルの通りに操作したら、問題なく動いた
調べながらでも1時間くらいでできた
簡単にスケールできるアプリ環境が構築できる!
GCPを生で使うより、GKEの方が簡単だし、スケールも
自動でついてくる
骋肠辫て?诲辞肠办别谤
まとめ
Dockerは、開発/運用の効率化に非常に有効な手段の一つ
DevOpsを見据えて、積極的に使っていく
Dockerさえ動けば、ベンダロックインされることも無いので、とり
あえず試してみるということができる
GKEは、設定も簡単なので試してみる価値あると思います
骋肠辫て?诲辞肠办别谤

More Related Content

骋肠辫て?诲辞肠办别谤