O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
Docker基礎概念と用語の理解
Docker Dojo Online #1
Sakura internet, Inc.
Masahito Zembutsu @zembutsu
#dockerdojo
Oct 10, 2020
Docker の基本キーワード
• BUILD、SHARE(SHIP)、RUN
• Docker (ソフトウェアとプラットフォーム)
• Docker Engine
• Docker コンテナ
• Docker イメージ → イメージ・レイヤ ...
コンテナを作る
3
#とは
4
Nginxのコンテナを作っておいたよ
hello-world のコンテナを実行したよ
そもそも Docker とは?
Why Docker?
5
Dockerとは?
6
Why Docker?
1
Dockerコンテナは
実行に必要な全て
をパッケージして、
簡単に動かせる
2
Dockerイメージは
複数のイメージ・レイ
ヤとメタ情報の積み
重なり
3
コンテナのプロセス
はデフォルト...
7
技術と仕様
Technology Specification
コンテナ Docker
Docker
8
“Docker allows you to package an application
with all of its dependencies into a standardized
unit for software d...
9
(物理または仮想)
Linux カーネル + システム・ライブラリ(libc)等
コンピュータ
CPU
メモリ
記憶装置
オペレーティングシステム (OS)の領域
10
(物理または仮想)
ユーザ空間
システム空間
Linux カーネル + システム・ライブラリ(libc)等
コンピュータ
CPU
メモリ
記憶装置
オペレーティングシステム (OS)の領域
プロセス
プログラム 設定ファイル ソースコード...
11
(物理または仮想)
ユーザ空間
システム空間
Linux カーネル + システム・ライブラリ(libc)等
コンピュータ
CPU
メモリ
記憶装置
オペレーティングシステム (OS)の領域
プログラム 設定ファイル ソースコード データ
...
12
isolate(分離)する
ア イ ソ レ ー ト
“名前空間”技術を使って
namespace
13
コンテナは特別なプロセスの状態
14
コンテナAの
ファイルシステム
… …
コンテナBの
ファイルシステム
/etc
(/data/ubuntu/etc)
/bin
(/data/ubuntu/bin)
/etc
(/data/centos/...
PID名前空間
15
httpd
PID 1
プロセスhttpd
名前空間
プロセスruby
名前空間
ruby
PID 1
chris.rb
PID 2
/sbin/init
PID 1
containerd
PID 5
httpd
PID ...
ファイルシステムを分ける (chrootのような概念)
16
ubuntuの
ファイルシステム
… …
centosの
ファイルシステム
/etc /bin /etc /bin
/ /
/data/ubuntu /data/centos
/
/...
コンテナは特別なプロセスの状態
17
コンテナAの
ファイルシステム
… …
コンテナBの
ファイルシステム
/etc
(/data/ubuntu/etc)
/bin
(/data/ubuntu/bin)
/etc
(/data/centos/...
「Dockerとコンテナ」のまとめ
⚫ Docker は、アプリケーションを実行するために必要な
依存関係(Linuxファイルシステム)を、Dokcer イメージにパッケージ化
⚫ アプリケーションを Docker コンテナとして実行するには、...
Linux サーバ
Dockerが入っていない環境
同じ設定の Nginx を同時に起動できない
Nginx 1
ホスト側
ネットワーク
インターフェース
Port 80
Nginx 2
Listen: 80 Listen: 80待ち受けポート...
Linux サーバ
Dockerが入っていない環境
同じ設定の Nginx を同時に起動できない
Dockerが入った環境
同じ設定の Nginx を同時に動かせる
Linux サーバ
Nginx 1
ホスト側
ネットワーク
インターフェース
...
21
では、Dockerは?
Dockerはサーバ・クライアント型モデル
22
OS ( Linux )
物理/仮想サーバ
Docker エンジン
( dockerd デーモン )
Linux kernel
コンテナ コンテナ コンテナ
リモート
API
docker
クラ...
23
ユーザ空間
システム空間
Linux カーネル + システム・ライブラリ(libc)等
オペレーティングシステム (OS)の領域
プログラム 設定ファイル
ソースコード データ
Dockerコンテナ
プロセス
Dockerコンテナ
プロセ...
24
Dockerの登場背景
Build, Ship(Share), Run
25
The future of Linux Containers - YouTube
https://www.youtube.com/watch?v=wW9CAH9nSLs
26
Dockerイメージとは
docker image pull (docker pull)
27
$ docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-...
Dockerイメージはイメージ・レイヤの積み重ね
28
プログラムやライブラリと
メタ情報(実行するプログラムやポートなど)
Dockerイメージはイメージ・レイヤの積み重ね
29
利用者からは
1つに見える
親
子
関
係
派生も
共有
利用者からは
1つに見える
プログラムやライブラリと
メタ情報(実行するプログラムやポートなど)
だから高速に移動できる・開発を高...
30
利用者からは
1つに見える
docker image build -t <IMAGE:TAG> .
(docker build)
31
利用者からは
1つに見える
hello:v1
FROM alpine
ENTRYPOINT ["/bin/echo"]
CMD ["こんにちは!こんにちは!"]
docker image build -t hello:v1 .
(dock...
32
hello:v1
FROM alpine
ENTRYPOINT ["/bin/echo"]
CMD [“おはよう!おはよう!"]
docker image build -t hello:v2 .
(docker build)
hello:...
33
Dockerイメージは「1つのファイル」ではなく「概念」。抽象的なイメージ・レイヤの積み重ね
docker~.img
×
ではなく
「Dockerイメージ」のまとめ
⚫ Docker イメージは、イメージ・レイヤの積み重ねで構成
⚫ 各イメージ・レイヤの中に「ファイルシステム」と「メタ情報」を含む
⚫ イメージ・レイヤは親子関係
⚫ 複数のレイヤ上のファイルや
ディレクトリ...
35
Dockerイメージを
どうやって作る?
36
Dockerfileで中間コンテナ実行・イメージ作成を自動化
❶ まず Dockerfile を
書きます。あるいは、
GitHub等から取得
❷ “docker build” で
Docker はイメージを
自動構築開始
❸完成したイメージで...
38
Dockerコンテナとは
39
技術と仕様
Technology Specification
コンテナ Docker
Dockerコンテナ実行とは、イメージ内のプログラムを実行
40
元のレイヤに対する変更情報を記録
Copy on Write の性質
コンテナ実行時に、読み書き可能なコンテナ用のイメージ・レイヤを作成し、プログラムを実行します。
docker...
httpd の専用ファイルシステム
(Dockerイメージ)
… …
ruby の専用ファイルシステム
(Dockerイメージ)
/etc
(/data/ubuntu/etc)
/bin
(/data/ubuntu/bin)
/etc
(/da...
Dockerコンテナもイメージ・レイヤを持つ
42
元のレイヤに対する変更情報を記録
Copy on Write の性質
利用者からは
1つに見える
利用者からは
1つに見える
だから高速に移動できる・開発を高速化できる
リソースを有効に使える...
「Dockerコンテナ」のまとめ
⚫ Docker は、アプリケーションを実行するために必要な
依存関係(Linuxファイルシステム)を、Dokcer イメージにパッケージ化
⚫ コンテナは特別な状態のプロセスで
Linux カーネルの様々な名...
“hello-world” イメージとコンテナ
docker run hello-world
44
docker run hello-world
45
library/hello-world
公式イメージの名前空間
他のイメージ
リポジトリ
他のイメージ
リポジトリ
Docker Hub
(公開レジストリ)
0e03bdcc26d7
tag:latesthello-world の のイメージ
...
/hello
Dockerイメージのファイルシステムに「/hello」が存在
「/hello」を自動実行する情報を持つDockerイメージ
/var/lib/docker/overlay2/...../hello
ホスト上に実体として「hell...
コンテナ実行時、Dockerイメージ(レイヤ)のファイルシステムも「/ 」にマウント
「/hello」 を
専用の PID 名前空間内で
PID 1 として実行する
プロセスはホスト上で実行するが、
この PID 名前空間内では自身の
「hello」しか認識しない。
また、ホスト上では正しい PID を持つ
【 PID 1 】
...
demo
「hello-world コンテナ実行」のまとめ
⚫ “hello-world” イメージは複数のイメージ・レイヤの積み重ね
⚫ “hello”というバイナリを
コンテナ状態で実行する
52
ここまでの振り返り
Dockerfile
Docker Composeとは?
53
What is Docker Compose?
1
Composeは
アプリケーションの
サービスをファイル
で定義する
2
Dockerコマンドと
高い親和性がある
ため、学習コストが
比較的に低い
...
図:Docker Comose で WordPressを動かす
Linux サーバ
Port 8080
wordpress
サービス
(コンテナ)
Listen: 80
WordPressのComposeプロジェク
ト
mysql
サービス
(...
図:Docker Comose は複数のプロジェクトが共存
Linux サーバ
Port 8080
wordpress
サービス
(コンテナ)
Listen: 80
Port 80
WordPressプロジェクト1
mysql
サービス
(コン...
Play with Docker
56
https://labs.play-with-docker.com/
57
振り返り
58
Docker の基本キーワード
• BUILD、SHARE(SHIP)、RUN
• Docker (ソフトウェアとプラットフォーム)
• Docker Engine
• Docker コンテナ
• Docker イメージ → イメージ・レイヤ ...
Dockerとは?
60
Why Docker?
1
Dockerコンテナは
実行に必要な全て
をパッケージして、
簡単に動かせる
2
Dockerイメージは
複数のイメージ・レイ
ヤとメタ情報の積み
重なり
3
コンテナのプロセス
はデフォル...
ありがとうございました。
• https://slideshare.net/zembutsu
• Dockerドキュメント日本語訳
http://docs.docker.jp
• Docker Composeドキュメント日本語訳
http://...
Docker道場オンライン#1 Docker基礎概念と用語の理解
Próximos SlideShares
Carregando em…5
×

Docker道場オンライン#1 Docker基礎概念と用語の理解

Docker道場オンライン#1発表資料です。
https://dockerdojo.connpass.com/event/191772/
配信動画 https://youtu.be/XMw0Ivtfxak

Livros relacionados

Gratuito durante 30 dias do Scribd

Ver tudo

Audiolivros relacionados

Gratuito durante 30 dias do Scribd

Ver tudo
  • Seja o primeiro a comentar

Docker道場オンライン#1 Docker基礎概念と用語の理解

  1. 1. Docker基礎概念と用語の理解 Docker Dojo Online #1 Sakura internet, Inc. Masahito Zembutsu @zembutsu #dockerdojo Oct 10, 2020
  2. 2. Docker の基本キーワード • BUILD、SHARE(SHIP)、RUN • Docker (ソフトウェアとプラットフォーム) • Docker Engine • Docker コンテナ • Docker イメージ → イメージ・レイヤ 、 Dockerfile • Docker ネットワーク • Docker ボリューム • Docker Hub • Docker Compose • Docker Desktop • Play with Docker https://labs.play-with-docker.com/ • ドキュメント https://docs.docker.jp 2
  3. 3. コンテナを作る 3 #とは
  4. 4. 4 Nginxのコンテナを作っておいたよ hello-world のコンテナを実行したよ
  5. 5. そもそも Docker とは? Why Docker? 5
  6. 6. Dockerとは? 6 Why Docker? 1 Dockerコンテナは 実行に必要な全て をパッケージして、 簡単に動かせる 2 Dockerイメージは 複数のイメージ・レイ ヤとメタ情報の積み 重なり 3 コンテナのプロセス はデフォルトで isolate(隔離・分離) された状態 プロセスを簡単にコンテナ化(isolate)し、 簡単かつ素早く開発・移動・実行できるプラットフォームが Docker Containerization 「プロセス・ファイルシステム・ネットワーク・等々」に対して Namespace・Cgroup Build Ship Run
  7. 7. 7 技術と仕様 Technology Specification コンテナ Docker
  8. 8. Docker 8 “Docker allows you to package an application with all of its dependencies into a standardized unit for software development.” www.docker.com 全ての依存関係をパッケージ化して、コンテナとして動かす Dockerイメージとして Linuxファイルシステムを
  9. 9. 9 (物理または仮想) Linux カーネル + システム・ライブラリ(libc)等 コンピュータ CPU メモリ 記憶装置 オペレーティングシステム (OS)の領域
  10. 10. 10 (物理または仮想) ユーザ空間 システム空間 Linux カーネル + システム・ライブラリ(libc)等 コンピュータ CPU メモリ 記憶装置 オペレーティングシステム (OS)の領域 プロセス プログラム 設定ファイル ソースコード データ プロセス 一般的な プロセス実行
  11. 11. 11 (物理または仮想) ユーザ空間 システム空間 Linux カーネル + システム・ライブラリ(libc)等 コンピュータ CPU メモリ 記憶装置 オペレーティングシステム (OS)の領域 プログラム 設定ファイル ソースコード データ コンテナは 特別な状態の プロセスのこと isolate(隔離) プロセス isolate(隔離) プロセス
  12. 12. 12 isolate(分離)する ア イ ソ レ ー ト “名前空間”技術を使って namespace
  13. 13. 13
  14. 14. コンテナは特別なプロセスの状態 14 コンテナAの ファイルシステム … … コンテナBの ファイルシステム /etc (/data/ubuntu/etc) /bin (/data/ubuntu/bin) /etc (/data/centos/etc) /bin (/data/centos/bin) / / httpd PID 1 プロセスA プロセスB ruby PID 1 chris.rb PID 2 コンテナA コンテナB 名前空間の isolate ・プロセス ・ファイルシステム ・ネットワーク ・ホスト名 ・UID・GID ・プロセス間通信、等 cgroupでリソース制限 ・CPU ・メモリ ・I/O ・ディスク・クォータ、等
  15. 15. PID名前空間 15 httpd PID 1 プロセスhttpd 名前空間 プロセスruby 名前空間 ruby PID 1 chris.rb PID 2 /sbin/init PID 1 containerd PID 5 httpd PID 6 ruby PID 7 chris.rb PID 8 alice PID 2 bob PID 3 PPID 1 PPID 1 PPID 4 PPID 5 PPID 5 PPID 7 PPID 1 dockerd PID 4 ホスト上には存在
  16. 16. ファイルシステムを分ける (chrootのような概念) 16 ubuntuの ファイルシステム … … centosの ファイルシステム /etc /bin /etc /bin / / /data/ubuntu /data/centos / /etc /data/bin ホスト上には存在
  17. 17. コンテナは特別なプロセスの状態 17 コンテナAの ファイルシステム … … コンテナBの ファイルシステム /etc (/data/ubuntu/etc) /bin (/data/ubuntu/bin) /etc (/data/centos/etc) /bin (/data/centos/bin) / / httpd PID 1 プロセスA プロセスB ruby PID 1 chris.rb PID 2 コンテナA コンテナB 名前空間の isolate ・プロセス ・ファイルシステム ・ネットワーク ・ホスト名 ・UID・GID ・プロセス間通信、等 cgroupでリソース制限 ・CPU ・メモリ ・I/O ・ディスク・クォータ、等
  18. 18. 「Dockerとコンテナ」のまとめ ⚫ Docker は、アプリケーションを実行するために必要な 依存関係(Linuxファイルシステム)を、Dokcer イメージにパッケージ化 ⚫ アプリケーションを Docker コンテナとして実行するには、 Docker イメージが必要 ⚫ コンテナは特別な状態のプロセスで Linux カーネルの様々な名前空間 (namespace)を分離(isolate)し 起動するもの 18 ここまでの振り返り
  19. 19. Linux サーバ Dockerが入っていない環境 同じ設定の Nginx を同時に起動できない Nginx 1 ホスト側 ネットワーク インターフェース Port 80 Nginx 2 Listen: 80 Listen: 80待ち受けポート設定
  20. 20. Linux サーバ Dockerが入っていない環境 同じ設定の Nginx を同時に起動できない Dockerが入った環境 同じ設定の Nginx を同時に動かせる Linux サーバ Nginx 1 ホスト側 ネットワーク インターフェース Port 80 Nginx 2 Listen: 80 Listen: 80待ち受けポート設定 Port 80 Nginx 1 Nginx 2 Listen: 80 Listen: 80 Port 8080 コンテナ1 コンテナ2
  21. 21. 21 では、Dockerは?
  22. 22. Dockerはサーバ・クライアント型モデル 22 OS ( Linux ) 物理/仮想サーバ Docker エンジン ( dockerd デーモン ) Linux kernel コンテナ コンテナ コンテナ リモート API docker クライアント TCP あるいは Unix ソケットドメイン containerd Runtime: runC (OCI規格準拠) ・docker コマンド Linux, Mac OS X, Windows ・Kitematic (GUI) Mac OS X, Windows ・Docker Compose ・Docker Swarm
  23. 23. 23 ユーザ空間 システム空間 Linux カーネル + システム・ライブラリ(libc)等 オペレーティングシステム (OS)の領域 プログラム 設定ファイル ソースコード データ Dockerコンテナ プロセス Dockerコンテナ プロセス Docker イメージ ビルド pull Dockerイメージ Dockerイメージ ※異なるシステム、バージョン、ソースコード Dockerイメージを使って Dockerコンテナ(隔離状態)のプロセスを起動
  24. 24. 24 Dockerの登場背景
  25. 25. Build, Ship(Share), Run 25 The future of Linux Containers - YouTube https://www.youtube.com/watch?v=wW9CAH9nSLs
  26. 26. 26 Dockerイメージとは
  27. 27. docker image pull (docker pull) 27 $ docker pull hello-world Using default tag: latest latest: Pulling from library/hello-world d1725b59e92d: Pull complete Digest: sha256:0add3ace90ecb4adbf7777e9aacf18357296e799f81cabc9fde470971e499788 Status: Downloaded newer image for hello-world:latest Docker Hub
  28. 28. Dockerイメージはイメージ・レイヤの積み重ね 28 プログラムやライブラリと メタ情報(実行するプログラムやポートなど)
  29. 29. Dockerイメージはイメージ・レイヤの積み重ね 29 利用者からは 1つに見える 親 子 関 係 派生も 共有 利用者からは 1つに見える プログラムやライブラリと メタ情報(実行するプログラムやポートなど) だから高速に移動できる・開発を高速化できる リソースを有効に使える “lightweight” な性質
  30. 30. 30 利用者からは 1つに見える docker image build -t <IMAGE:TAG> . (docker build)
  31. 31. 31 利用者からは 1つに見える hello:v1 FROM alpine ENTRYPOINT ["/bin/echo"] CMD ["こんにちは!こんにちは!"] docker image build -t hello:v1 . (docker build)
  32. 32. 32 hello:v1 FROM alpine ENTRYPOINT ["/bin/echo"] CMD [“おはよう!おはよう!"] docker image build -t hello:v2 . (docker build) hello:v2
  33. 33. 33 Dockerイメージは「1つのファイル」ではなく「概念」。抽象的なイメージ・レイヤの積み重ね docker~.img × ではなく
  34. 34. 「Dockerイメージ」のまとめ ⚫ Docker イメージは、イメージ・レイヤの積み重ねで構成 ⚫ 各イメージ・レイヤの中に「ファイルシステム」と「メタ情報」を含む ⚫ イメージ・レイヤは親子関係 ⚫ 複数のレイヤ上のファイルや ディレクトリが1つに見える 34 ここまでの振り返り
  35. 35. 35 Dockerイメージを どうやって作る?
  36. 36. 36
  37. 37. Dockerfileで中間コンテナ実行・イメージ作成を自動化 ❶ まず Dockerfile を 書きます。あるいは、 GitHub等から取得 ❷ “docker build” で Docker はイメージを 自動構築開始 ❸完成したイメージで コンテナを起動したり DockerHubに送信を 命令1 命令2 命令3 $ mkdir myproject $ cd myproject $ vim Dockerfile $ docker build -t myproj . 読み込み イメージレイヤ群を自動構築 Dockerfile $ docker run -d myproj $ docker push DockerがDockerfileを読み込み 中間コンテナを起動して命令を実行 →docker commitでイメージ化 ((( commit commit commit
  38. 38. 38 Dockerコンテナとは
  39. 39. 39 技術と仕様 Technology Specification コンテナ Docker
  40. 40. Dockerコンテナ実行とは、イメージ内のプログラムを実行 40 元のレイヤに対する変更情報を記録 Copy on Write の性質 コンテナ実行時に、読み書き可能なコンテナ用のイメージ・レイヤを作成し、プログラムを実行します。 docker container run -it alpine (docker run) この例では、ベースとなるのが “alpine” Dockerイメージです (読み込み専用。一切変更できません。) 変更できるのは、 “alpine” を親イメージ・レイヤとして 情報を持っている、赤い部分の読み書き可能なレイヤ。 (docker ps -aで確認でき、docker rm で消すのは このコンテナ用レイヤです) ファイル変更時は、読み込み専用のイメージ・レイヤ から一度ファイルをコピーする挙動が発生します。 (これを、コピー・オン・ライトと呼びます)。
  41. 41. httpd の専用ファイルシステム (Dockerイメージ) … … ruby の専用ファイルシステム (Dockerイメージ) /etc (/data/ubuntu/etc) /bin (/data/ubuntu/bin) /etc (/data/centos/etc) /bin (/data/centos/bin) / / httpd PID 1 httpdプロセス専用の PID名前空間 ruby プロセス専用の PID名前空間 ruby PID 1 chris.rb PID 2 httpd コンテナの名前空間 ruby コンテナの名前空間 名前空間の isolate ・プロセス ・ファイルシステム ・ネットワーク ・ホスト名 ・UID・GID ・プロセス間通信、等 cgroupでリソース制限 ・CPU ・メモリ ・I/O、等 PID名前空間、マウント名前空間 以外にも、ネットワークなども分 離しています。さらに、それぞれの コンテナにcgroupでリソースの 制限も可。ただし、コンテナは仮 想マシンではありません。ハード ウェアの仮想化は行わず、あくま でも、プロセスを特別な状態 にしているだけです。 mount 名前区間 mount 名前区間 Docker コンテナの実行とは、特別な状態でのプロセス実行
  42. 42. Dockerコンテナもイメージ・レイヤを持つ 42 元のレイヤに対する変更情報を記録 Copy on Write の性質 利用者からは 1つに見える 利用者からは 1つに見える だから高速に移動できる・開発を高速化できる リソースを有効に使える “lightweight” な性質
  43. 43. 「Dockerコンテナ」のまとめ ⚫ Docker は、アプリケーションを実行するために必要な 依存関係(Linuxファイルシステム)を、Dokcer イメージにパッケージ化 ⚫ コンテナは特別な状態のプロセスで Linux カーネルの様々な名前空間 (namespace)を分離(isolate)し 起動するもの ⚫ Docker コンテナは、読み書き可能な イメージ・レイヤを持つ ⚫ Docker イメージに対する変更は、このコンテナ用レイヤで行われる 43 ここまでの振り返り
  44. 44. “hello-world” イメージとコンテナ docker run hello-world 44
  45. 45. docker run hello-world 45
  46. 46. library/hello-world 公式イメージの名前空間 他のイメージ リポジトリ 他のイメージ リポジトリ Docker Hub (公開レジストリ) 0e03bdcc26d7 tag:latesthello-world の のイメージ このイメージは1つのレイヤで、Docker Hub 上では docker pull hello-world:latest latest タグを持つ、 実体としてのイメージ(レイヤ) ID は bf756fb1ae65... Docker イメージのダウンロード
  47. 47. /hello Dockerイメージのファイルシステムに「/hello」が存在 「/hello」を自動実行する情報を持つDockerイメージ /var/lib/docker/overlay2/...../hello ホスト上に実体として「hello」があるイメージ・レイヤ 「/hello」を自動実行するメタ情報を持つイメージ・レイヤ + この2つのイメージ・レイヤの情報が統合されて...
  48. 48. コンテナ実行時、Dockerイメージ(レイヤ)のファイルシステムも「/ 」にマウント
  49. 49. 「/hello」 を 専用の PID 名前空間内で PID 1 として実行する プロセスはホスト上で実行するが、 この PID 名前空間内では自身の 「hello」しか認識しない。 また、ホスト上では正しい PID を持つ 【 PID 1 】 hello
  50. 50. demo
  51. 51. 「hello-world コンテナ実行」のまとめ ⚫ “hello-world” イメージは複数のイメージ・レイヤの積み重ね ⚫ “hello”というバイナリを コンテナ状態で実行する 52 ここまでの振り返り Dockerfile
  52. 52. Docker Composeとは? 53 What is Docker Compose? 1 Composeは アプリケーションの サービスをファイル で定義する 2 Dockerコマンドと 高い親和性がある ため、学習コストが 比較的に低い 3 Swarm モードに サービスをデプロイ できるオーケストレー ション機能 ⚫ docker-compose CLI のコマン 体系は docker に準拠 ⚫ 例:「docker run -d」は 「docker-compose up -d」 ⚫ Docker swarm モードを使えば、 サービス状態を定義できるので 常に期待状態を維持できる ◼ docker stack deploy ⚫ Ingress ネットワークの活用 ⚫ Compose ファイル (YAML形式) で Docker コンテナのサービスを 定義できるため、 再利用性が高い ◼ コンテナの状態 ◼ イメージ ◼ ネットワーク ◼ ボリューム ◼ メタ情報 https://github.com/docker/compose 複数のコンテナで構成するアプリケーションを 定義と実行するためのツール multi-container applications define and run
  53. 53. 図:Docker Comose で WordPressを動かす Linux サーバ Port 8080 wordpress サービス (コンテナ) Listen: 80 WordPressのComposeプロジェク ト mysql サービス (コンテナ) Listen: 3306 プロジェクト用ボリューム プロジェクト用 ブリッジ・ネットワーク1 ホスト側インターフェース
  54. 54. 図:Docker Comose は複数のプロジェクトが共存 Linux サーバ Port 8080 wordpress サービス (コンテナ) Listen: 80 Port 80 WordPressプロジェクト1 mysql サービス (コンテナ) Listen: 3306 プロジェクト用ボリューム プロジェクト用 ブリッジ・ネットワーク1 wordpress Listen: 80 WordPressプロジェクト2 mysql Listen: 3306 プロジェクト用ボリューム プロジェクト用 ブリッジ・ネットワーク2 ホスト側インターフェース
  55. 55. Play with Docker 56
  56. 56. https://labs.play-with-docker.com/ 57
  57. 57. 振り返り 58
  58. 58. Docker の基本キーワード • BUILD、SHARE(SHIP)、RUN • Docker (ソフトウェアとプラットフォーム) • Docker Engine • Docker コンテナ • Docker イメージ → イメージ・レイヤ 、 Dockerfile • Docker ネットワーク • Docker ボリューム • Docker Hub • Docker Compose • Docker Desktop • Play with Docker https://labs.play-with-docker.com/ • ドキュメント https://docs.docker.jp 59
  59. 59. Dockerとは? 60 Why Docker? 1 Dockerコンテナは 実行に必要な全て をパッケージして、 簡単に動かせる 2 Dockerイメージは 複数のイメージ・レイ ヤとメタ情報の積み 重なり 3 コンテナのプロセス はデフォルトで isolate(隔離・分離) された状態 ⚫ イメージ・レイヤ(image layer)は 読み込み専用 ⚫ 親子関係がある ⚫ イメージに対する変更はCopy on Write(CoW)処理が走る ⚫ コンテナ実行にはイメージが必要 で、Docker Hubから得られる ⚫ コンテナ実行時のみ、読み書きが 可能なレイヤを追加 ⚫ namespace(名前空間)でプロセ ス空間やファイルシステムやネッ トワーク等を分ける技術と、 cgroups(コントロール・グループ) でリソースの利用上限を指定 ⚫ コンテナはポートをデフォルトで開 かない ⚫ ネットワークはブリッジ、ホスト、 noneの3種類 ⚫ ボリュームはコンテナ間でファイル システムを共有できる。名前付き (named)とホスト・ボリューム ⚫ アプリケーションを簡単に開発し、 移動し、実行するためのプログラム とプラットフォームを提供するのが Docker ⚫ クライアント・サーバ型 https://docker.com プロセスを簡単にコンテナ化(isolate)し、 簡単かつ素早く開発・移動・実行できるプラットフォームが Docker Containerization 「プロセス・ファイルシステム・ネットワーク・等々」に対して Namespace・Cgroup Build Ship Run
  60. 60. ありがとうございました。 • https://slideshare.net/zembutsu • Dockerドキュメント日本語訳 http://docs.docker.jp • Docker Composeドキュメント日本語訳 http://docs.docker.jp/compose/ • 公式ドキュメント https://docs.docker.com 61

×