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.

Docker勉強会2017 最新基礎・応用編

687 views

Published on

最新のDocker環境をハンズオンで実習しました。こちらは説明進行用のスライドです。
2017/07/22のDocker勉強会の資料。https://atnd.org/events/88886

Published in: Software
  • Be the first to comment

Docker勉強会2017 最新基礎・応用編

  1. 1. Docker勉強会2017 最新基礎・応用編 @長野県塩尻市 日時:2017年7月22日(土曜日) 会場:塩尻インキュベーションプラザ Twitterハッシュタグ #shiojiri-oss ©2017 Shinichiro Ohhara
  2. 2. 大原 慎一郎 ohhara@shiojiri.com (有)トラストネットワークス 長野県塩尻市 塩尻インキュベーションプラザ108号室 自己紹介と協賛紹介 ©2017 Shinichiro Ohhara 信州OSS推進協議会 https://www.facebook.com/ShinshuOSS/ 信州オープンビジネスアライアンス http://s-soba.or.jp/ 株式会社 リモードデザイン http://www.remode-d.jp
  3. 3. アジェンダ • Docker最新基礎入門 • ハンズオン実習の準備 • Docker基本操作 • アプリケーションコンテナ • データコンテナ • オーケストレーション • サービスコンテナ ©2017 Shinichiro Ohhara
  4. 4. 前回までの資料 • SlideShareにて各スライド資料を公開 • 2014年9月に入門編を開催 Docker入門 http://www.slideshare.net/ShinichiroOhhara/docker-39456836 • 2016年11月に再入門を開催 Docker再入門 http://www.slideshare.net/ShinichiroOhhara/docker-2016-update • 2017年1月に実践編を開催 Docker実践編 https://www.slideshare.net/ShinichiroOhhara/docker2017 ©2017 Shinichiro Ohhara
  5. 5. 仮想環境 (VM1) Docker Engine 仮想マシン(VM)とコンテナ ハードウェア ホストOS ハイパーバイザー 仮想マシン ゲストOS ハードウェア ホストOS(Linux Kernel) Bins/Libs AP コンテナ1 Bins/Libs AP 仮想環境 (VM2) 仮想マシン ゲストOS Bins/Libs AP コンテナ2 Bins/Libs AP
  6. 6. Docker最新基礎入門 • 前回から変わったこと・・・ • 3月16日に4年目の誕生日を迎えました。 • コミニュティ版(CE)とエンタープライズ版(EE) に別れました。 • DockerCon 2017 オースティンで開催 • LinuxKit 発表 • moby Project 発表 • Docker 17.06 Community Edition リリース ©2017 Shinichiro Ohhara
  7. 7. https://blog.docker.com/2017/05/get-involved-moby-project-attending-upcoming-moby- summits/?mkt_tok=eyJpIjoiTWpaallXSm1ZekUzWlRVMiIsInQiOiJUdUpYd0VXYzFvclwvR3BmVG9waGhqWXhIZ1pvSHBESlpoS0h2 ZG0xQm03QmcxZFZQc2NLdFphNjVIMG9BbmJzWUtDOGFBZWIyazNSY2ZcL0toRWREZ3ltdG13bk1lSllzYkVTeUxqVW9RTVk2dlJhe DFCb0VzWjJDYnA3cUxLU2EyIn0%3D
  8. 8. ハンズオン実習の準備 • 各自がPCを操作して実習 • ローカル環境を各自で準備 • 配布した別紙にて詳細を説明(非公開) A) 会場のWiFi接続設定 B) ローカルPCのSSHログイン設定(公開鍵作成) C) 仮想サーバーへのログイン D) 仮想サーバーへDocker CEインストール E) Dockerの基本設定 ©2017 Shinichiro Ohhara
  9. 9. Docker基本操作 • コンテナ操作コマンド A) docker ps B) docker start C) docker rm • イメージ操作コマンド A) docker images B) docker run C) docker rmi ©2017 Shinichiro Ohhara
  10. 10. Docker基本操作 • Docker Hub操作コマンド A) docker search B) docker pull ©2017 Shinichiro Ohhara
  11. 11. Docker基本操作 • OSイメージコンテナを実行 A) Ubuntuの最新公式イメージのダウンロード B) Ubuntuコンテナのbash実行 C) 実行後にコンテナ内へログイン状態に移行 D) ログアウトするとコンテナも終了 • サービスの終了がコンテナの停止 A) 例ではbashをexitした事でコンテナが停止 B) 常駐サービスの場合はバックグラウンド起動 ©2017 Shinichiro Ohhara
  12. 12. Docker基本操作 • サービスコンテナのバックグラウンド実行 A) Webサーバー(Nginx)のサービスコンテナ実行 B) コンテナのバックグラウンド起動を確認 C) Webブラウザで表示 D) コンテナの停止と状態確認 E) コンテナの再実行と状態確認 ©2017 Shinichiro Ohhara
  13. 13. アプリケーションコンテナ • コンテナイメージの作成 A) 例題として簡単なPythonアプリ(friendlyhello) B) コンテナ構成ファイルDockerfileの作成 C) 必要なパッケージリストファイル作成 D) Pythonプログラムファイル作成 E) Dockerコマンドでビルド実行してイメージ作成 docker build –t [リポジトリ名:タグ名][Dockerfileへのパス] ©2017 Shinichiro Ohhara
  14. 14. アプリケーションコンテナ • 作成したイメージからコンテナを起動 A) イメージの確認 docker images B) コンテナの状態を確認 docker ps –a C) 作成したfriendlyhelloのイメージをコンテナ起動 D) Webブラウザで表示 ©2017 Shinichiro Ohhara
  15. 15. アプリケーションコンテナ • レジストリ A) コンテナイメージを共有管理 B) 公式レジストリDocker Hub https://hub.docker.com/ C) イメージはアップロードか自動作成(Dockerfile) D) リポジトリは一般公開され誰でも利用可能 E) 非公開のプライベートリポジトリは1つまでは無料 ©2017 Shinichiro Ohhara
  16. 16. アプリケーションコンテナ • プライベートレジストリの作成 A) ローカル環境にプライベートレジストリ構築 B) レジストリイメージをダウンロード C) レジストリイメージからコンテナサービス起動 D) 前項で作成したfriendlyhelloを使用 E) イメージのタグを修正 F) リポジトリとしてプライベートレジストリへ登録 G) ローカルキャッシュイメージを消しても再利用可 ©2017 Shinichiro Ohhara
  17. 17. データコンテナ • ホストOS側ファイルをコンテナで利用する A) コンテナからホストOS側ファイルを利用 B) データ編集はホストOS側なので自由 C) docker run –v D) ホストOS側のデータ参照ファイルをコンテナ側か ら利用する実習 E) 書き換えを制限して利用する場合 ©2017 Shinichiro Ohhara
  18. 18. コンテナ データコンテナ • ホストOS側を透過的に利用 ホストOS ホストOS側ディレクトリ コンテナ側ディレクトリ ©2017 Shinichiro Ohhara
  19. 19. データコンテナ • 複数のコンテナで共有する A) コンテナ間でデータを共有できる共有ボリューム B) 1つ目のコンテナで共有ボリュームを設定 C) 2つ目のコンテナでは1つ目のコンテナを指定 D) docker run –-volumes-from E) 書き換えを制限して利用する場合 F) ただし提供元側コンテナは制限されない ©2017 Shinichiro Ohhara
  20. 20. コンテナ1 データコンテナ • コンテナの共有ボリュームを利用 共有ボリューム コンテナ2 コンテナ3 ©2017 Shinichiro Ohhara
  21. 21. データコンテナ • データコンテナ A) 共有ボリューム提供に特化したコンテナ B) データ専用のコンテナで分離し可搬性が向上 C) アプリケーションは入れない動作させない D) 保守用に必要最小限のコマンド E) コンテナイメージbusybox F) データコンテナを作成して別コンテナから参照 G) サービス実行していなくても利用できる ©2017 Shinichiro Ohhara
  22. 22. 複数のサービス連携 コンテナ1 Bins/Libs Services1 コンテナ1 Bins/Libs Services1 Services2 複数のサービスを 含めたコンテナ コンテナ2 Bins/Libs Services2 単一のサービスのコンテナを リンク連携した場合
  23. 23. 複数のサービス連携 • 1つのサービスに1つのコンテナが基本 • アプリは複数のサービスで構成される。 フロントエンド:webサーバー バックエンド:データベースサーバー • コンテナ間をリンク連携
  24. 24. ホスト1 複数のサービス連携 コンテナ1 Bins/Libs Services1 コンテナ2 Bins/Libs Services2 複数のホストに複数のコンテナを連携する場合 ホスト2 コンテナ3 Bins/Libs Services3 コンテナ4 Bins/Libs Services4
  25. 25. オーケストレーション • Dockerコンテナ自体には無い スケジュールやリソースの管理や複数のコンテ ナを管理する機能 ©2017 Shinichiro Ohhara
  26. 26. オーケストレーション • パブリッククラウドの例 Amazon AWS ECS(Amazon EC2 Container Service) https://aws.amazon.com/jp/ecs/?p=tile Google GCP Kubernetes(k8s) https://cloud.google.com/container-engine/?hl=ja Microsoft Azure DC/OS, Kubernetes(k8s),Docker Swarm https://azure.microsoft.com/ja-jp/services/container-service/
  27. 27. オーケストレーション • OSSで利用出来る実装 Apache Mesos http://mesos.apache.org/ Mesosphere DC/OS https://dcos.io/ Kubernetes(k8s) https://kubernetes.io/ Docker Compose v3 + Docker Swarm
  28. 28. Docker Compose • Dockerコマンドはコンテナ単位で操作 • 複数のコンテナ構築と操作が面倒くさい! • まとめて管理出来ないか・・・ • 複数のコンテナ構成を管理する • YAML形式ファイルで設定 • プロジェクト単位で管理 • v3でSwarmに対応
  29. 29. Docker Swarm • Dockerコンテナのクラスタ構築ツール • 別のプロダクトでしたが、Docker 1.12から Docker Engineに統合されました。 • Swarm modeに変更するだけで機能します。 • Managerと複数のWorkerで構成 • 透過ネットワークingressによる 冗長化と負荷分散
  30. 30. Docker Swarm mode Bins/Libs Nginx Workerノード Bins/Libs Nginx Workerノード Bins/Libs Nginx Managerノード ingressオーバレイネットワーク
  31. 31. サービスコンテナ • サービスコンテナ A) docker-compose.ymlファイル作成 B) 例題としてレジストリのfriendlyhelloを使用 C) Swarm modeを実行 D) 複数サービスのコンテナを実行 E) WebブラウザでリロードしてコンテナIDを確認 F) 設定変更して負荷分散の動作を再確認 ©2017 Shinichiro Ohhara

×