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 Tokyo

6,775 views

Published on

Docker Birthday #5 Celebration (Docker Tokyo #22)
の資料です。

Published in: Technology
  • Dating direct: ❶❶❶ http://bit.ly/2Qu6Caa ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Sex in your area is here: ❶❶❶ http://bit.ly/2Qu6Caa ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Looking For A Job? Positions available now. FT or PT. $10-$30/hr. No exp required. ▲▲▲ https://tinyurl.com/vvgf8vz
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Docker Tokyo

  1. 1. Dockerの紹介 © 2018 cyberblack28 Docker Birthday #5 Celebration (Docker Tokyo #22) Docker 5周年記念ハンズオン(講習会)
  2. 2. Profile Twitter:cyberblack28 Job Infrastructure Engineer Frontend Engineer Educational Solution Architect Community Hobby1: Music,Live,FES !! Hobby2: Take a picture !! https://www.flickr.com/photos/cyberblack ISBN-10: 4798155373 ISBN-13: 978-4798155371 第6章 Rancher2.0の 部分を執筆しました。 2018年3月15日発売
  3. 3. 3 Docker実践入門 中井悦司さん SoftwareDesign 2015年12月号 参考図書・資料 http://www.slideshare.net/enakai/docker-with-rhel7 Docker with RHEL7 技術勉強会 http://www.slideshare.net/zembutsu/devsumi-2016-docker-introduction Docker 基礎講座 前佛雅人さん
  4. 4. • サーバ仮想化について • Dockerの基礎技術~Linuxコンテナー~ • Dockerとは? • Dockerの基礎技術~Dockerイメージ~ • Dockerfile • Dockerの基本機能 • コンテナーのライフサイクル • Dockerコマンド 4 アジェンダ Docker基礎 • 複数コンテナー • Docker Compose • docker-composeコマンド Docker Compose基礎 Information • JapanContainerDays • JapanContainerDays Training
  5. 5. 5 Docker 基礎
  6. 6. サーバ仮想化について 1/4 ①非仮想化環境 6 物理ハードウェア OS アプリケーション
  7. 7. 7 物理ハードウェア ホストOS 仮想化アプリケーション 仮想マシンA アプリケーション ゲストOS 仮想マシンB アプリケーション ゲストOS 仮想マシンC アプリケーション ゲストOS ②ホストOS型仮想 ホストOS上の仮想化アプリケーション上で仮想マシンを稼働 させる。 VMware Workstation、Microsoft VirtualPC、VirtualBox サーバ仮想化について 2/4
  8. 8. 8 物理ハードウェア ハイパーバイザー 仮想マシンA アプリケーション ゲストOS 仮想マシンB アプリケーション ゲストOS 仮想マシンC アプリケーション ゲストOS ③ハイパーバイザー型仮想(ソフトウェア) ホストOSを必要とせず、ハイパーバイザーというソフトウェ ア上で仮想マシンを稼働させる。 VMware ESXi、Xen/Citrix XenServer、Microsoft Hyper-V サーバ仮想化について 3/4
  9. 9. 9 物理ハードウェア ホストOS ハイパーバイザー 仮想マシンA アプリケーション ゲストOS 仮想マシンB アプリケーション ゲストOS ④ハイパーバイザー型仮想(カーネルモジュール) ホストOS(Linux)のカーネルモジュールのハイパーバイ ザー機能で仮想マシンを稼働させる。 Linux KVM サーバ仮想化について 4/4
  10. 10. Dockerの基礎技術~Linuxコンテナー~ 1/3 Linuxコンテナーは、仮想マシン、ゲストOSという考え方はありません。(仮想ではない) Linuxカーネルの機能により、Linux上で稼働するユーザープロセスをグループに分割し、各グ ループごとに異なる環境(ファイルシステム、ネットワーク等)を割り当てたユーザー空間(コ ンテナー)のことです。 物理ハードウェア 非仮想化環境 ユ ー ザ ー プ ロ セ ス ユ ー ザ ー プ ロ セ ス ユ ー ザ ー プ ロ セ ス ・ ・ ・ カーネル空間 物理ハードウェア 分割した環境 ・ カーネル空間 ユ ー ザ ー プ ロ セ ス ・・ ユーザー空間 ユーザー空間 ユ ー ザ ー プ ロ セ ス ユ ー ザ ー プ ロ セ ス ユ ー ザ ー プ ロ セ ス ユーザー空間 OS コンテナ 10
  11. 11. 物理ハードウェア コンテナーに属さないユーザー空間をLinuxホストと呼んだ りします。 ・ カーネル空間 ユ ー ザ ー プ ロ セ ス ・・ ユーザー空間 ユーザー空間 ユ ー ザ ー プ ロ セ ス ユ ー ザ ー プ ロ セ ス ユ ー ザ ー プ ロ セ ス 11 ユ ー ザ ー プ ロ セ ス ユ ー ザ ー プ ロ セ ス ユーザー空間= Linuxホスト ユ ー ザ ー プ ロ セ ス ・・・ コンテナ Dockerの基礎技術~Linuxコンテナー~ 2/3
  12. 12. ■namespace機能 namespace 説明 Mount namespace ファイルシステムの分離 UTS namespace ホストネームの分離 IPC namespace IPC(プロセス間通信)の分離 User namespace ユーザ(UID/GID)の分離 PID namespace プロセステーブルの分離 Network namespace ネットワーク設定の分離 namespace機能は、ユーザープロセスのグループ分割を始め、ファイルシステム やネットワーク設定の分離等、いくつかの種類があります。 ■cgroup機能 cgroup機能は、それぞれのグループ(コンテナー)に対して、CPU、メモリの割 り当てを制御する機能です。 12 Linuxコンテナーを実現するための主なカーネル機能として、namespace機能と cgroup機能があります。 Dockerの基礎技術~Linuxコンテナー~ 3/3
  13. 13. Dockerとは? 1/3 Linuxコンテナーは、Linuxカーネルの機能 であるnamespace機能やcgroup機能 を組み合わせて実現されるものです。 13
  14. 14. それでは、Dockerとは何でしょうか? 14 Dockerとは? 2/3
  15. 15. Dockerとは、Linuxカーネルの機能を統合し、 コンテナーを作成して、アプリケーションを 稼働させるためのソフトウェア 15 Dockerとは? 3/3
  16. 16. 物理ハードウェア pull カーネル空間 ユ ー ザ ー プ ロ セ ス コンテナー コンテナー ユ ー ザ ー プ ロ セ ス ユ ー ザ ー プ ロ セ ス 16 ユーザー空間 Docker Hub (レジストリ) CentOS レポジトリ Ubuntu レポジトリ https://hub.docker.com/ push tag:latest tag:6.7 ・ ・ tag:latest tag:14.04 ・ ・ DockerHubからpullしたDockerイメージをコンテナーに当てることでCentOSや Ubuntuをコンテナーで起動できます。 Dockerの基礎技術~Dockerイメージ~ 1/2
  17. 17. Dockerの基礎技術~Dockerイメージ~ 2/2 17 Docker イメージ 読み込み専用 (ReadOnly) ベースイメージ CentOS,Ubuntu等 イメージ層 コマンドごとに記録 ベースイメージ CentOS,Ubuntu等 イメージ層 コマンド(RUN)及び ビルドごとに記録 書き込み可能な イメージ層 読み込み専用 (ReadOnly) コンテナーが起動すると、 自動的に書き込み可能な レイヤーが作られる仕組 みです。 (1)Dockerイメージの構造 (2)Dockerコンテナー起動時の構造
  18. 18. 18 命令 説明 FROM イメージを指定 「リポジトリー:タグ名」 MAINTAINER イメージ作成者名 ENV イメージ作成時やコンテナー実行の環境変数を設定 RUN コマンドの実行 ADD/COPY イメージ内にファイルやディレクトリーをコピー EXPOSE コンテナーで使用するポート番号を指定 CMD/ENTRYPOINT コンテナー起動時に実行するコマンドを指定 VOLUME ホストの一時保存ディレクトリを割り当てるディレクトリを指定 WORKDIR RUN,CMD,ENTRYPOINTを実行する時のカレントディレクトリを指定 Dockerfile Dockerfileは、イメージの構成内容をまとめて記述するテキスト形式のファイルで す。1行につき1つの操作を{命令}と{引数}でスペース区切りで記述します。 「#」から始まる行はコメントとして処理されます。 buildコマンドでは、Dockerfileの上から順番に処理が実行されます。 主な命令
  19. 19. #centos6のイメージを取得 FROM centos:centos6 #Dockerfile作成者 MAINTAINER linaction #タイムゾーンの設定 RUN /bin/cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime #yumによるHTTPD,MySQL,PHP,tar,wgetのインストール RUN yum -y install httpd php php-mysql mysql-server tar wget php-gd #tmpディレクトリに移動 WORKDIR /tmp/ #wordpress一式のダウンロード RUN wget https://ja.wordpress.org/latest-ja.tar.gz #wordpressの展開 RUN tar xvfz ./latest-ja.tar.gz #ダウンロードしたwordpressの削除 RUN rm -f ./latest-ja.tar.gz #wordpressディレクトリ内のファイルをDocumentRootに移動 RUN mv wordpress/* /var/www/html/ #wordpressのconfigファイルをリネームして利用可能にする RUN cp /var/www/html/wp-config-sample.php /var/www/html/wp-config.php #wordpressのconfigファイルに必要な情報をsedコマンドで書き換える RUN sed -i -e 's/database_name_here/wordpress/g' -e 's/username_here/wordpress/g' -e 's/password_here/wppass/g' /var/www/html/wp-config.php #DocumentRootディレクトリの所有者をapacheに変更 RUN chown -R apache.apache /var/www/html/ #mysqldの起動、DB作成、ユーザ作成および権限設定、mysqldの停止 RUN service mysqld start && mysql -u root -e "CREATE DATABASE wordpress; GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost' IDENTIFIED BY 'wppass'; FLUSH PRIVILEGES;" && service mysqld stop #mysqld,httpdの起動スクリプトの作成 RUN echo -e "service mysqld startnservice httpd startn/bin/bash" > /startService.sh #mysqld,httpdの起動スクリプトの権限設定 RUN chmod o+x /startService.sh #公開ポート EXPOSE 80 #mysqld,httpdの起動スクリプトの実行 CMD /startService.sh 19 1コンテナーにWordPress環境構築
  20. 20. Dockerの基本機能 Docker Hub (イメージレジストリ) Dockerfile 20 Dockerイメージ アプリケーション フレームワーク アプリケーション ライブラリ OSイメージ Dockerサーバ ① Dockerイメージ自動作成 ② Dockerイメージ の保存・公開 ③ Dockerサーバにイメージ配布・実行 イメージの 作成手順を記載 docker pull docker push docker build docker commit
  21. 21. コンテナーのライフサイクル 21 run(起動)、stop(停止)、start(再開)、commit(保存)、rm(削除)における、 コンテナーのライフサイクルは以下の様になります。 保存イメージ スナップショット プロセス スナップショット スナップショット 保存イメージ run start stop rm commit コンテナーが破棄されます。 コンテナーを複製して、保存イ メージとして登録します。 コンテナーを停止するとプロセ スが終了し、コンテナーが残り ます。 コンテナーの起動と同時にス ナップショットが作成されます。
  22. 22. 22 新コマンド 旧コマンド 説明 docker container attach docker attach 稼働中のコンテナーに接続 docker container commit docker commit コンテナーに加えた変更を基に新しいDockerイメージを作成 docker container cp docker cp コンテナーのファイルシステムからホスト環境にファイルやフォルダー をコピーする docker container create docker create 新しいコンテナーを作成 docker container diff docker diff コンテナーのファイルシステムに加えられた変更を調査 docker container events docker events Dockerサーバからイベント情報を受け取る docker container exec docker exec 稼働中のコンテナー内でコマンドを実行 docker container export docker export コンテナーのコンテンツをtarアーカイブ形式で出力 docker container info docker info システム情報を表示 docker container kill docker kill 稼働中のコンテナーを直ちに停止 docker container login docker login Dockerレジストリに登録またはログイン docker container logout docker logout Dockerレジストリからログアウト docker container logs docker logs コンテナーのログを取得 docker container pause docker pause コンテナー内の全プロセスを一時停止 docker container port docker port コンテナーの通信ポート割り当て状況を表示・調査 docker container ls docker ps 稼働中のコンテナー一覧表示 docker container コマンド 1 Dockerコマンド 1/4 下位互換はありますが、V1.13以降から新コマンド体系の採用が推奨されています。
  23. 23. Dockerコマンド 2/4 23 新コマンド 旧コマンド 説明 docker container rename docker rename コンテナー名を変更 docker container restart docker restart 稼働中のコンテナーを再起動 docker container rm docker rm コンテナーの削除 docker container run docker run 新しいコンテナー内でコマンドを実行 docker container search docker search Dockerインデックスからイメージを検索 docker container start docker start 停止したコンテナーを稼働 docker container stats docker stats コンテナーのリソース使用状況のライブストリームを表示 docker container stop docker stop 稼働中のコンテナーを停止 docker container top docker top コンテナー内の稼働中のプロセスを表示 docker container unpause docker unpause 一時停止させたコンテナー内の全プロセスを再開 docker container version docker version Dockerのバージョン表示 docker container wait docker wait コンテナーが停止するまでブロック、その後終了コードを表示 docker container コマンド 2 下位互換はありますが、V1.13以降から新コマンド体系の採用が推奨されています。
  24. 24. 24 新コマンド 旧コマンド 説明 docker image build docker build Dockerfileを基にDockerイメージを作成 docker image history docker history Dockerイメージの履歴表示 docker image load docker load tarアーカイブからイメージをロード docker image import docker import コンテンツのtarアーカイブから新しいファイルシステムイメージを作成 docker image ls docker images Dockerイメージの一覧を表示 docker image inspect docker inspect Dockerイメージやコンテンツの低レベル情報を表示 docker image prune (v1.13~) 使用していないイメージを削除 docker image pull docker pull DockerイメージをDockerレジストリから取得 docker image push docker push DockerイメージをDockerレジストリに送る docker image rm docker rmi コンテナーの削除 docker image save docker save イメージをtarアーカイブに保存 docker image tag docker tag Dockerイメージをリポジトリにタグ付け docker image コマンド Dockerコマンド 3/4 下位互換はありますが、V1.13以降から新コマンド体系の採用が推奨されています。
  25. 25. 25 attachとexecの違い Dockerコマンド 4/4 attachは、コンテナーで起動しているPID=1のプロセスの標準入出力 (STDIN/STDOUT)に接続するため、exitと同時にPID=1の/bin/bashが終了し、コ ンテナーも停止する。 execは、新たに/bin/bashのプロセスが起動し、exitしても新規の/bin/bashプロ セスが終了となるため、元々の/bin/bash自体は停止しないため、コンテナーは稼 働状態となる。
  26. 26. 26 Docker Compose 基礎
  27. 27. 複数のコンテナー 27 前半では、1コンテナーの中に、Apache、MySQLをインストールしました。 推奨されているコンテナーの利用方法として、「1コンテナ1プロセス」があ ります。 これは大規模でオーケストレーションツール(Kubernetes等)と組み合わせ たマイクロサービスのシステム上で有用性があります。 もう少し小さい規模においては、例えば、WEB、APP、DB等のロールベー スに分けることが良いとされているケースもあります。 後半では、Docker Composeを利用して、WEB(WordPress)と DB(MySQL)を分けて、複数コンテナー管理をしてみようと思います。
  28. 28. 28 docker compose は docker-compose.ymlというファイルで構成を定義 します。YAMLで体系的に構成を定義出来るので複数コンテナーの全体像を 管理しやすくなります。 docker run時のオプションも定義できるので、コマンド1回実行するだけで 複数のコンテナを起動できます。 Docker Compose 1/2
  29. 29. 29 コマンド 説明 up コンテナーの生成/起動 down 全てのコンテナの停止と同時削除 scale 生成するコンテナー数の指定 ps コンテナーの一覧表示 logs コンテナーログ出力 run コンテナーの実行 start コンテナーの起動 stop コンテナーの停止 restart コンテナーの再起動 kill 実行中のコンテナーの強制停止 rm コンテナーの削除 docker-composeコマンド その他詳細は、こちらのリファレンスを参照。 http://docs.docker.jp/compose/reference/overview.html
  30. 30. 30 LB Internet オーケストレーション ツール イメージ レジストリ コンテナーオーケストレーションへ オーケストレーショ ンツールを利用した 冗長構成
  31. 31. Information 2018.04.19(Thu) @BELLESALLE KANDA お申し込み先 https://eventregist.com/e/containerdays1804/ticket rancherjp20 “20%OFF Promotion Code” https://containerdays.jp/
  32. 32. Information Training 4/20(Fri),5/7(Mon) 講師担当 お申し込み先 4/20(Fri) https://eventregist.com/e/containerdays1804training/ticket 5/7(Mon) http://eventregist.com/e/containerdays1804training2
  33. 33. Information Training カリキュラム Docker基礎 • サーバ仮想化について • Dockerの基礎技術~Linuxコンテナー~ • Dockerとは? • Dockerの基礎技術~Dockerイメージ~ • Dockerハンズオン~WordPressの環境作成~ • 参考図書・資料 • 仮想マシンの作成 • Dockerのインストール • Docker Hubからコンテナーイメージのpull • コンテナーの起動 • 起動したコンテナーの確認 • コンテナーとホストLinuxとの切替 • コンテナーの起動と停止 • DockerfileからWordPress環境作成 • コンテナーのcommit • コンテナーイメージをDocker Hubにpush • コンテナーのライフサイクル • 複数コンテナー • Docker Compose • docker-compose.ymlの内容 • .envファイルの内容 • 主なコマンド • コンテナーオーケストレーション Kubernetes(オーケストレーション) • kubernetesについて Worklad~Podについて~ Network~Serviceについて~ Storage~Volumeについて~ Storage~PersistentVolume(PV)とPersistentVolumeClaim(PVC)に ついて~ Storage~StorageClass~ Storage~ConfigMapについて~ Storage~Secretについて~ オブジェクト識別~LabelとLabel Selectorについて~ オブジェクト識別~Namespaceについて~ • ハンズオン環境について • RKE(Rancher Kubernetes Engine)について • 仮想マシン作成とRKEインストール準備 • RKEのインストール • RKEでkubernetesクラスターの構築 • kubectlについて • kubectlのインストール • Helmについて • Helmのインストール • Prometheusについて • Prometheusのインストール • PrometheusとGrafana連携 • weavescopeについて • weavescopeのデプロイ • Guestbookアプリケーションについて • Guestbookアプリケーションのデプロイ • Ingressについて • Ingressの設定追加 • kubernetes dashboardについて • kubernetes dashboardのデプロイ Microsft Azure AKS • AKSについて • AKSでkubernetesクラスターの構築
  34. 34. Thank you for your attention !!

×