Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Gcpでdocker

4,516 views

Published on

2016-07-23 GCPUG信州で発表した資料です。
GoogleのクラウドプラットフォームでのDockerの利用について紹介しています。

Published in: Technology
  • Be the first to comment

Gcpでdocker

  1. 1. Dockerしてますか?
  2. 2. アジェンダ Dockerとは? GCP(Google Cloud Platform)でDockerの利用 GKE(Google Container Engine)の説明 GKEを実際に使ってみる まとめ
  3. 3. 自己紹介 Koda といいます 「Web」「Cloud」の開発者です OSSの情報共有サービス「Knowledge」を公開してます
  4. 4. Dockerをとりまく状況
  5. 5. 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」を発表、同日出荷した。
  6. 6. 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」を発表、同日出荷した。 激アツ!
  7. 7. いろいろなクラウド基盤がありますが
  8. 8. どこでも使えます
  9. 9. Dockerとは? コンテナ型の仮想化技術 VMware ESXiやLinux KVMなどは「ハイパーバイザー型 の仮想化」 Dockerは「コンテナー型の仮想化」
  10. 10. 何が嬉しいの? 各コンテナは大きくリソースを使わない マイクロサービスアーキテクチャと親和性が高い コンテナイメージを一度作成してしまえばコピーが簡単 スケールできる インフラ操作はDokcerfile(テキストファイル)で行う Infrastructure as Code
  11. 11. ネイティブに環境構築 サーバーに直接データベースなどのアプリをインストールする DBなどは共有して使う ことも多く、気軽に バージョンアップできない 同じ構成を作るのが 非常に大変 Server Host OS Bins/Libs DB App2App1
  12. 12. VM リソースが潤沢にあれば、 複数のバージョンを 起動できる VMを大事に保守していく イメージ Server Host OS Hypervisor GuestOS Bins/Libs DB1 GuestOS GuestOS Bins/Libs App2App1 Bins/Libs
  13. 13. Docker Dockerでは、イメージの リソースは非常に小さい 環境構築も高速 気軽にコンテナを 作成/削除 「環境」を使い捨てできる Server Host OS Docker Bins/Libs DB1 App1 Bins/Libs App2 Bins/Libs
  14. 14. VM vs Docker(Dockerの良いところ) VM Docker イメージのサイズ 大きい(◯GB) 小さい(◯MB) 起動時間 時間がかかる 素早い インフラ管理 管理しづらい コードで管理
  15. 15. Infrastructure as Code インフラを手動で構築すると、作業ミスが発生 インフラを手動で変更する場合も作業ミスが多い インフラAとインフラBの構成が変わってきていて、Aの変更作業 をBで実施しても、同じようにうごかない Dockerでは、イメージの構築手順はDockerfileというテキ ストで管理する Gitで差分管理できる
  16. 16. Vagrant vs Docker VagrantもVagrantfileで環境構築をCodeで管理 VagrantはVM型/Dockerはコンテナ型 起動時間が数分/数秒 イメージの容量が数GB/数MB
  17. 17. # 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の例
  18. 18. 作成済イメージの利用 Dockerfileを使って作成したコンテナイメージを登録する機能が ある Dockerリポジトリ DockerHub(公開)/プライベートなリポジトリ 公開リポジトリにはイメージがいろいろある(MySQL、Tensorflow…) それを取得(Pull)すれば環境構築完了 後は起動するだけ
  19. 19. Docker リポジトリ使いたいイメージを取得 するだけで環境構築完了 作成したイメージ 自分たちで作成したイメージを リポジトリに登録して、環境を 配布することもできる
  20. 20. DockerでTensorFlow Dockerがインストールされていれば、すぐに試すことが できる $ docker pull gcr.io/tensorflow/tensorflow $ docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflow
  21. 21. 開発機 ①gitへソースをpush CIサーバー ②CIでDockerイメージをBuild ③イメージを登録 CIとDocker テストサーバー ④更新通知 ⑤イメージをPull CIとDockerを使った、環境自動更新の例
  22. 22. Google Container Engine DockerをGoogleのクラウドで簡単に使えるようにしたサー ビス 略称はGKE。Google Compute Engineの略称GCEとかぶる ためにGKEになったらしい Google Compute Engine上にKubernetesのクラスタを 作成し、Dockerコンテナを配置可能 Amazon AWS / Microsoft Azureにも類似のサービスがある ベンダロックインも無いので積極的に使っていける!
  23. 23. Kubernetesって? Dockerのデプロイ/オーケストレーションツール 関連するコンテナのグルーピング コンテナに割り振られるIPアドレスの管理 コンテナ間のネットワークルーティング管理 複数のコンテナを利用した負荷分散 コンテナに割り当てるストレージの管理 コンテナの監視
  24. 24. GKEのすごいところ 一度Dockerイメージを作って登録しておけば、クラスタ 管理してくれるので、Dockerイメージ単位(≒マイクロ サービス)にオートスケールを行う コンテナの死活監視もKubernetesが行ってくれるので、 運用が簡単
  25. 25. Google Container Engineの動作イメージ DockerRepository オートスケール ロードバランス
  26. 26. GKE用のツールをインストール https://cloud.google.com/sdk/#Quick_Start 公式から「install.sh」を取得して、実行するだけ(Mac) Ø 何も問題なく完了
  27. 27. Google Container Engine を利用開始 1. メニュー選択 2. コンテナクラスタ作成
  28. 28. 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
  29. 29. Googleのコンテナリポジトリに登録
  30. 30. アクセスしてみる 動いてる!
  31. 31. 感想
  32. 32. 感想 チュートリアルの通りに操作したら、問題なく動いた 調べながらでも1時間くらいでできた 簡単にスケールできるアプリ環境が構築できる! GCPを生で使うより、GKEの方が簡単だし、スケールも 自動でついてくる
  33. 33. まとめ Dockerは、開発/運用の効率化に非常に有効な手段の一つ DevOpsを見据えて、積極的に使っていく Dockerさえ動けば、ベンダロックインされることも無いので、とり あえず試してみるということができる GKEは、設定も簡単なので試してみる価値あると思います

×