Submit Search
Upload
そろそろ知っておきたい!!コンテナ技術とDockerのキホン
•
115 likes
•
18,208 views
Naoki Nagazumi
Follow
NTT-AT社内で定期的に実施している勉強会(CORETECH技術講習会)で発表した資料です。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 111
Download now
Download to read offline
Recommended
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Masahito Zembutsu
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
Masahito Zembutsu
Docker道場オンライン#1 Docker基礎概念と用語の理解
Docker道場オンライン#1 Docker基礎概念と用語の理解
Masahito Zembutsu
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
Recommended
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Masahito Zembutsu
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
Masahito Zembutsu
Docker道場オンライン#1 Docker基礎概念と用語の理解
Docker道場オンライン#1 Docker基礎概念と用語の理解
Masahito Zembutsu
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Yuichi Ito
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Masahito Zembutsu
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Kohei Tokunaga
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Masahito Zembutsu
containerdの概要と最近の機能
containerdの概要と最近の機能
Kohei Tokunaga
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
コンテナを突き破れ!! ~コンテナセキュリティ入門基礎の基礎~(Kubernetes Novice Tokyo #11 発表資料)
コンテナを突き破れ!! ~コンテナセキュリティ入門基礎の基礎~(Kubernetes Novice Tokyo #11 発表資料)
NTT DATA Technology & Innovation
Docker 基本のおさらい
Docker 基本のおさらい
Naoki Nagazumi
Dockerクイックツアー
Dockerクイックツアー
Etsuji Nakai
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
NTT DATA Technology & Innovation
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver
Masahito Zembutsu
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
DevOpsにおけるAnsibleの立ち位置と使い所
DevOpsにおけるAnsibleの立ち位置と使い所
Hidetoshi Hirokawa
Dockerを支える技術
Dockerを支える技術
Etsuji Nakai
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討
Masahito Zembutsu
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
コンテナ技術と普及がシステム・インテグレータに与える影響
コンテナ技術と普及がシステム・インテグレータに与える影響
Masahito Zembutsu
本格的にコンテナを利用するために ~ Azureでのコンテナ利用パターン
本格的にコンテナを利用するために ~ Azureでのコンテナ利用パターン
雄哉 吉田
More Related Content
What's hot
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Yuichi Ito
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Masahito Zembutsu
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Kohei Tokunaga
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Masahito Zembutsu
containerdの概要と最近の機能
containerdの概要と最近の機能
Kohei Tokunaga
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
コンテナを突き破れ!! ~コンテナセキュリティ入門基礎の基礎~(Kubernetes Novice Tokyo #11 発表資料)
コンテナを突き破れ!! ~コンテナセキュリティ入門基礎の基礎~(Kubernetes Novice Tokyo #11 発表資料)
NTT DATA Technology & Innovation
Docker 基本のおさらい
Docker 基本のおさらい
Naoki Nagazumi
Dockerクイックツアー
Dockerクイックツアー
Etsuji Nakai
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
NTT DATA Technology & Innovation
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver
Masahito Zembutsu
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
DevOpsにおけるAnsibleの立ち位置と使い所
DevOpsにおけるAnsibleの立ち位置と使い所
Hidetoshi Hirokawa
Dockerを支える技術
Dockerを支える技術
Etsuji Nakai
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討
Masahito Zembutsu
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
What's hot
(20)
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
containerdの概要と最近の機能
containerdの概要と最近の機能
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナを突き破れ!! ~コンテナセキュリティ入門基礎の基礎~(Kubernetes Novice Tokyo #11 発表資料)
コンテナを突き破れ!! ~コンテナセキュリティ入門基礎の基礎~(Kubernetes Novice Tokyo #11 発表資料)
Docker 基本のおさらい
Docker 基本のおさらい
Dockerクイックツアー
Dockerクイックツアー
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
DevOpsにおけるAnsibleの立ち位置と使い所
DevOpsにおけるAnsibleの立ち位置と使い所
Dockerを支える技術
Dockerを支える技術
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Viewers also liked
コンテナ技術と普及がシステム・インテグレータに与える影響
コンテナ技術と普及がシステム・インテグレータに与える影響
Masahito Zembutsu
本格的にコンテナを利用するために ~ Azureでのコンテナ利用パターン
本格的にコンテナを利用するために ~ Azureでのコンテナ利用パターン
雄哉 吉田
マイクロサービスとOSSのおいしい関係
マイクロサービスとOSSのおいしい関係
Fumiya Shinozuka
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
Etsuji Nakai
神奈川Ruby会議の会場係だけが知る密かな危機の話
神奈川Ruby会議の会場係だけが知る密かな危機の話
Naoki Nagazumi
マイクロサービスで、 一歩先行くImmutable Infrastructureを目指そう
マイクロサービスで、 一歩先行くImmutable Infrastructureを目指そう
Takashi Abe
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
Etsuji Nakai
マイクロサービスアーキテクチャとは何か
マイクロサービスアーキテクチャとは何か
Yusuke Suzuki
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudy
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudy
Kazuhito Miura
Viewers also liked
(9)
コンテナ技術と普及がシステム・インテグレータに与える影響
コンテナ技術と普及がシステム・インテグレータに与える影響
本格的にコンテナを利用するために ~ Azureでのコンテナ利用パターン
本格的にコンテナを利用するために ~ Azureでのコンテナ利用パターン
マイクロサービスとOSSのおいしい関係
マイクロサービスとOSSのおいしい関係
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
神奈川Ruby会議の会場係だけが知る密かな危機の話
神奈川Ruby会議の会場係だけが知る密かな危機の話
マイクロサービスで、 一歩先行くImmutable Infrastructureを目指そう
マイクロサービスで、 一歩先行くImmutable Infrastructureを目指そう
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
マイクロサービスアーキテクチャとは何か
マイクロサービスアーキテクチャとは何か
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudy
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudy
Similar to そろそろ知っておきたい!!コンテナ技術とDockerのキホン
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Masahito Zembutsu
DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念
Masahito Zembutsu
Dockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しよう
Takashi Makino
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Masahiro Nagano
Dockerハンズオン
Dockerハンズオン
Kazuyuki Mori
Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもん
Masahito Zembutsu
Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法
Microsoft Corporation
Docker超入門
Docker超入門
VirtualTech Japan Inc.
Docker実践入門
Docker実践入門
hiro nemu
Dockerことはじめ的なはなし
Dockerことはじめ的なはなし
pinmarch_t Tada
20230128.pptx
20230128.pptx
ssuserdad311
ゆるふわなDockerの使い方
ゆるふわなDockerの使い方
Kento Aoyama
Docker入門
Docker入門
Keita Midorikawa
Dockerハンズオン
Dockerハンズオン
Kon Yuichi
Docker講習会資料
Docker講習会資料
teruyaono1
Docker v14
Docker v14
靖 小田島
ラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaS
npsg
Docker Tokyo
Docker Tokyo
cyberblack28 Ichikawa
捕鯨!詳解docker
捕鯨!詳解docker
雄哉 吉田
Webアプリケーション開発者のためのDockerハンズオン
Webアプリケーション開発者のためのDockerハンズオン
虎の穴 開発室
Similar to そろそろ知っておきたい!!コンテナ技術とDockerのキホン
(20)
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念
Dockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しよう
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerハンズオン
Dockerハンズオン
Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもん
Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法
Docker超入門
Docker超入門
Docker実践入門
Docker実践入門
Dockerことはじめ的なはなし
Dockerことはじめ的なはなし
20230128.pptx
20230128.pptx
ゆるふわなDockerの使い方
ゆるふわなDockerの使い方
Docker入門
Docker入門
Dockerハンズオン
Dockerハンズオン
Docker講習会資料
Docker講習会資料
Docker v14
Docker v14
ラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaS
Docker Tokyo
Docker Tokyo
捕鯨!詳解docker
捕鯨!詳解docker
Webアプリケーション開発者のためのDockerハンズオン
Webアプリケーション開発者のためのDockerハンズオン
Recently uploaded
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
Atomu Hidaka
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
furutsuka
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
Shota Ito
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
osamut
Recently uploaded
(9)
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
そろそろ知っておきたい!!コンテナ技術とDockerのキホン
1.
そろそろ知っておきたい!! コンテナ技術と Dockerのキホン NTTアドバンステクノロジ株式会社 アプリケーションソリューション事業本部 長住 直樹
2.
自己紹介 長住 直樹(ながずみ
なおき)/ Twitter @nk_ngzm NTTアドバンステクノロジ株式会社 アプリケーションソリューション事業本部 社内で技術者育成活動(通称:CORETECH)を推進しています。
3.
4.
5.
6.
7.
Linux Container Linuxカーネルが持つ機能を 使って実現するコンテナ。 略して、LXCと表記することもある。
8.
ここで、VMのおさらい VMは、コンピュータの上で動くOSやVMを実現するためのハイパーバイザの上で、実際 のハードウェアをエミュレートするVMが動きます。つまり実際の物理的なコンピュータ と同じようなものがソフトウェアによって実現されているので、このVMを使うにはOS が必要になります。つまり、物理的なコンピュータ上で動くOSの上でさらにOSが動き ます。 引用: http://gihyo.jp/admin/serial/01/linux_containers/0002
9.
対してコンテナの原理 起動する全てのプロセスはコンピュータ上にインストールされたOS(ホストOS)上で 直接起動します。通常のプロセスの動作と異なるのは、そのプロセスの一部をグループ 化し、他のグループやグループに属していないプロセスから隔離した空間で動作させる 点です。貨物輸送のコンテナのように、隔離された空間にプロセスが入っているので、 この空間を『コンテナ』と呼ぶわけです。実際のコンテナのように、あるコンテナの内 部から他のコンテナの内部を見ることはできません。 引用: http://gihyo.jp/admin/serial/01/linux_containers/0002
10.
コンテナを実現するカーネル機能 名前空間とも呼ばれ、マウント、ホスト・ドメイン名、プロセス空間、ソケットや メッセージキューの空間、ユーザ・グループ、ネットワークなどの名前空間ごとに 識別・隠蔽できる機能。例えば、マウント名前空間を使うと、名前空間内で行った マウント操作を他の名前空間には反映させないといったことができる。すなわち, コンテナ内でマウント操作を行った場合、そのマウントはホストOSや他のコンテ ナからは見ない。 名前空間の名前 隔離されるリソース 実装されたカーネル バージョン マウント名前空間 マウントの集合,操作
2.4.19 UTS名前空間 ホスト名,ドメイン名 2.6.19 PID名前空間 プロセスID(PID) 2.6.24 IPC名前空間 SysV IPCオブジェクト,POSIXメッセージキュー 2.6.19 ユーザ名前空間 UID,GID 3.8 ネットワーク名前空間 ネットワークデバイス,アドレス,ポート,ルーティ ングテーブル,フィルタなど 2.6.26
11.
コンテナを実現するカーネル機能 「Control Group」の略。プロセスをグループ化して,そのグループ内に存在する プロセスに対して、たとえば、CPUやメモリなどのリソースに制限を行うなど、グ ループ単位のリソース管理が行える機能。 サブシステム 機能 blkio
ブロックデバイスの入出力アクセスを制御 (Read <= N bytes/sec) cpu スケジューラにより CPU のアクセスを制御 cpuset マルチコアの場合に利用する CPU, メモリノードを制御 devices デバイスへのアクセス制御 freezer 処理の一時停止, 再開 memory メモリリソースの制御 hugetlb N byteまでとかの制限 net_cls Linux トラフィックコントローラ (tc) がパケットを識別できるよう, クラス識別子 (classid) によりネットワークパケットにタグをつける net_prio NIC 別にトラフィックのプライオリティを設定する
12.
コンテナを実現するカーネル機能 ルートディレクトリを、任意の特定のディレクトリに変更できる機能。 chroot 内で起動されるプロセスは、設定された任意の場所をルートディレクトリ として動作するため、その範囲外のディレクトリやファイルへは一切アクセスでき なくなる。 / libbin usr
homeetc bin lib chroot → / etc usr
13.
コンテナを実現するカーネル機能 netns(Linux Network Namespace)は、ホストサーバ内に、仮想的ブリッジ 「br0」と、「veth」と呼ばれる直結した仮想NICのペアからなる仮想ネットワー クを構築する。コンテナ毎に独立した
veth が生成され、その片側をコンテナ内部 のイーサネット「eth0」として割り当てる。 引用 : http://www.school.ctc-g.co.jp/columns/nakai/nakai41.html
14.
デモ(その1) chroot を使ったルートファイルシステムの隔離
15.
chroot / libbin usr demoetc bin
lib chroot → / etc usr
16.
chroot 新たな ルートディレクトリの作成
bashの動作に最低限必要な環境を新たな ルートディレ クトリ配下にコピー 新たなルートディレクトリでbashを動かす $ sudo mkdir -p /demo/chroot $ sudo cp -pr /bin /lib /lib64 /usr /etc /demo/chroot/ $ sudo chroot /demo/chroot /bin/bash
17.
18.
LXC Linuxカーネルの機能のみを用いてコンテナの操作 を行うソフトウェアとして、2008年ごろから linuxcontainers.orgで 開発されている。 Linuxカーネルにパッチを当てたりすることなく、 カーネルに実装されているコンテナに関する機能 を前提にして簡単にコンテナの操作が行える。
19.
Container と LXC LXCという用語は以下の2つの意味で使われることがある。 I.
Linuxカーネルが持つ機能を使って実現するコンテナ という一般的な意味で使う場合 II. linuxcontainers.org で開発されているコンテナを扱 うためのソフトウェアという狭い意味 本講習会では、前者の意味では「Container/コンテナ」、 後者の意味では「LXC」と区別して説明する。
20.
ちなみに、LXC以外には? LXC以外の代表的なコンテナ方面のソフトウェア。 Linuxカーネルにコンテナ関連の技術が充分に実装されていない頃から、カーネルにパッチを当 ててコンテナを実現してきた本分野のパイオニア的ソフトウェア。現在Linuxカーネルに実装さ れているコンテナ機能にはOpenVZ由来のものが数多くある。なお、これをベースとした商用 ソフト「Virtuozzo」は、現在でも、世界中のホスティングサービスで広く使われている。 Cloud Foundry というPaaSを構築できるソフトウェアで、その心臓部といえるコンテナ機能 を提供するコンポーネント。 主に、Linux
kvm サーバ仮想化環境を管理するツールであるが、Linuxコンテナにも対応して いる。
21.
デモ(その2) LXCを使用したコンテナの利用
22.
LXCの利用条件 LXCのインストールには、ubuntu OSがお勧め、 出来る限り ubuntu14.04
以降のバージョンを使 用すること。 centos など RedHat系OSにもインストールでき るようであるが、ubunutに比べて環境設定が激し く面倒くさい。(インストーラでいろいろやってくれない) LXCは、root ユーザで操作する必要がある。
23.
デモ環境 ホスト ubuntu 14.0.4
trusty / 64bit Kernel 3.13.0-48-generic lxc version 1.0.7-0ubuntu0.1
24.
LXC インストール ubuntuの場合、以下のコマンド一発でインストールが 終わる。
ubuntu01という名前でubuntuベースのコンテナ作成 ※ 社内ネットワークを経由する場合は、別途Proxy設定が必要。 $ sudo apt install lxc $ sudo lxc-create -t ubuntu -n ubuntu01
25.
LXCでコンテナ作成 LXCコンテナは、仮想マシンのようにDVDなどのISOイ メージからインストールすることはできない。 従って、LXCには、コンテナを作成するためのスクリプト としてテンプレートが付属しており、テンプレートを使っ て、コンテナイメージを作成する。 また、 lxc-downloadという名前のテンプレートが付属し ており、あらかじめ構築されたコンテナイメージをLXCの サイトからダウンロードしてコンテナを作成することも可 能である。
26.
コンテナ起動と停止 ubuntu01 という名前のコンテナを起動
起動したコンテナに接続(その1) 起動したコンテナに接続(その2) 起動したコンテナを停止 $ sudo lxc-start -n ubuntu01 -d $ sudo lxc-attach -n ubuntu01 $ sudo lxc-stop -n ubuntu01 $ sudo lxc-console -n ubuntu01
27.
その他の基本操作 作成したコンテナの一覧を見る ubuntu01
という名前のコンテナの情報を見る $ sudo lxc-ls ubuntu01 $ sudo lxc-ls -f NAME STATE IPV4 IPV6 AUTOSTART --------------------------------------------- ubuntu01 RUNNING 10.0.3.18 - NO $ sudo lxc-info -n ubuntu01 Name: ubuntu01 State: RUNNING PID: 26948 ... ...
28.
その他の基本操作 ubuntu01コンテナをubuntu02という名前でクローン ubuntu02
という名前のコンテナを削除 その他、メモリやCPU、ディスクなどのコンテナ・リソー スを制御するコマンド(lxc-cgroup)などがある。 $ sudo lxc-clone -o ubuntu01 -n ubuntu02 $ sudo lxc-destroy -n ubuntu02
29.
入門編
30.
Docker 「Docker」は、米国 Docker社(旧dotCloud)が開 発するオープンソースのコンテナ管理ソフトウェ アのひとつ。Go言語で実装されている。 軽量な仮想化環境であるコンテナを提供し、アプ リケーション実行環境をそのまま Dockerイメー ジとして保存できる。
31.
Docker 仮想サーバではなくアプリケーションに最適化さ れているため、原則的に、ひとつのコンテナに、 ひとつのアプリケーションが実行する構成となる。 さらに、Dockerは、ネットワーク、ストレージ、 ロギング、ディストリビューションなどマシン特 有の設定を抽象化しているため、どんなマシンへ も、どんな構成でも実行でき、ポータブルデプロ イを実現できる。
32.
LXCとDocker もともとDockerは、 LXCを経由してLinuxコ ンテナ機能を利用して いた。 Docker Ver0.9 より、 libcontainer
という独 自のライブラリを経由 するように改良。 現在でもオプションで LXCを選択することが可 能。 引用 : https://blog.docker.com/2014/03/docker-0-9-introducing-execution-drivers-and-libcontainer/
33.
AUFS AUFS(Another Union FS)とは、レイヤ構造の ファイルシステムである。 親のファイルシステムをリード・オンリーとし、 その上にライタブルなレイヤを重ねていく。 こうして複数のレイヤを積み重ね、レイヤを通じ て、ひとつのファイルシステムのように扱う。 親コンテナからの差分管理ができるため、コンテ ナイメージの容量を軽量化できる。
34.
AUFS 親コンテナか らの差分管理 ができるため、 コンテナイ メージの容量 を軽量化でき る。 引用 : http://gesellix.github.io/gradle-summit-2014/
35.
DockerイメージとDockerコンテナ Dockerイメージとは、Docker コ ンテナ生成のベースとなるひな形。 代表的な例として ubuntu
や centos 等のディストリビュー ションがイメージ化されている。 Dockerコンテナとは、ある Dockerイメージをベースにして 個別アプリケーションの環境を セットアップして作成するコンテ ナ実行環境。 Docker コンテナ Docker イメージ Docker イメージ docker run docker commit
36.
Docker Hub Docker社は、Docker Hub
というクラウド上のリポジトリ を提供しており、様々な団体や個人が作成した Dockerイ メージを利用したり、自分で作成したイメージを共有する ことが可能。 https://hub.docker.com/ Docker コンテナ Docker イメージ Docker イメージ docker run docker commit docker pull docker push
37.
デモ(その3) Dockerの基礎的な利用方法
38.
Docker の利用条件 Docker をインストールできる環境は、
Red Hat 系 OS もしくは ubuntu系 OS であること、およ び 64bitマシン+OS であること。 カーネルが古いとうまく動作しないので、インス トール前に 最新バージョンにアップ・トゥ・デー トしておくこと Dockerは、root ユーザ で操作する必要がある。
39.
デモ環境 ホスト cnetos 6.6 /
64bit Kernel 2.6.32-504.el6.x86_64 docker version 1.4.1, build 5bc2ff8/1.4.1
40.
Docker インストール centos
6.6 へインストール centos 6.6 で自動起動設定(必要に応じて) ※ 社内ネットワークを経由する場合は、別途Proxy設定が必要。 $ sudo rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6 $ sudo yum -y install ¥ http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm $ sudo yum install docker-io $ sudo chkconfig docker on
41.
Docker インストール centos
7系 へインストール centos 7系 で自動起動設定(必要に応じて) ※ 社内ネットワークを経由する場合は、別途Proxy設定が必要。 $ sudo yum install docker $ sudo systemctl enable docker.service
42.
Docker インストール ubuntu
14.04 LTS へインストール ubuntu 14.04 LTS で自動起動設定(必要に応じて) ※ 社内ネットワークを経由する場合は、別途Proxy設定が必要。 $ sudo apt install docker.io $ sudo update-rc.d docker.io defaults
43.
Docker イメージ取得 centos
最新版のDockerイメージをDL ubuntu 最新版のDockerイメージをDL ubuntu 12.04 DockerイメージをDL $ sudo docker pull ubuntu:latest $ sudo docker pull ubuntu:12.04 $ sudo docker pull centos:latest ※社内ネットワークを経由する場合は、別途 DNSサーバの設定と Proxy設定が必要。
44.
Docker イメージ管理 Dockerイメージの一覧表示
DLした ubuntu 12.04 イメージを削除 $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos latest 214a4932132a 40 hours ago 229.6 MB ubuntu latest d0955f21bf24 3 weeks ago 192.7 MB ubuntu 12.04 9c5e4be642b7 3 weeks ago 132.1 MB $ sudo docker rmi ubuntu:12.04 $ sudo docker rmi [IMAGE ID で指定することも可能]
45.
Docker コンテナ生成+起動 centos
最新版イメージから centos01という名 前でコンテナを作成、そして、アプリケーショ ンに bash を指定して実行する Dockerコンテナ centos の bash に入る Dockerコンテナの bash を exit するとコンテナ自体も終了する $ sudo docker run -i -t --name centos01 centos:latest /bin/bash [コンテナ内のbashでいろいろ操作] ... ... # exit (bash を exit)
46.
Docker コンテナ生成+起動 ubuntu
最新版イメージから ubuntu01 という 名前でコンテナを作成、同じくアプリケーショ ンに bash を指定して実行 Dockerコンテナ ubuntu の bash に入る コンテナの bash を exit するとコンテナも終了する $ sudo docker run -it --name ubuntu01 ubuntu /bin/bash
47.
Docker コンテナ生成+起動 docker
run コマンド書式 # docker run ¥ [オプション] ¥ [--name コンテナ名] ¥ イメージ名 [:タグ名] ¥ [コンテナで実行するコマンドとその引数]
48.
Docker コンテナ生成+起動 docker
run の主なオプション option 説 明 -d コンテナをバックグラウンドで実行する。 WebサーバやDBサーバなど、デーモン系のプロセスを常時実行す るコンテナの場合に指定する。 -i コンテナの標準入力を開く。 /bin/bashなどでコンテナを対話で操作する場合に指定する。 -t 端末デバイス(tty)を確保する。-iと同時に使用することが多い。 /bin/bashなどでコンテナを対話で操作する場合に指定する。 -p "-p ホスト側ポート:コンテナ側ポート" で、Dockerサーバとホス トサーバ間のポートマッピングを構成する
49.
Docker コンテナ生成+起動 Docker は、仮想サーバではなくアプリケーションに最適化されているため、 原則的に、ひとつのコンテナに、ひとつのアプリケーションが実行する構成と なる。 すなわち、Dockerは、docker
run で作成 したコンテナ内で、同コマンドで指定する ひとつの アプリケーションを実行する。 指定したアプリケーションが exit すると同 時にそのDockerコンテナも 停止 する。
50.
デタッチ/アタッチ centos02コンテナを作成してbashを起動 Dockerコンテナをデタッチ
Dockerコンテナにアタッチ 再び、Dockerコンテナに入る bash を exit でコンテナを終了 $ sudo docker run -it --name centos02 centos:latest /bin/bash コンテナ内で [Ctrl] + [p] → [Ctrl] + [q] キーを押下 $ sudo docker attach centos02
51.
Docker コンテナ管理 既存コンテナ
centos02 を再起動 docker start コマンド書式 $ sudo docker start –i centos02 # docker start [-i] {コンテナ名|コンテナID} option 説 明 -i コンテナの標準入力を開く。 /bin/bashなどでコンテナを対話で操作する場合に指定する。
52.
Docker コンテナ管理 Docker
コンテナ一覧(動いているものだけ)表示 止まってるものを含め全部の一覧 $ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0e9b0b2759ec centos:latest "/bin/bash" 4 minutes ago Up 50 seconds centos02 $ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0e9b0b2759ec centos:latest "/bin/bash" 6 minutes ago Up 3 minutes centos02 1352f3ef1c8b ubuntu:latest "/bin/bash" 11 minutes ago Exited (0) 11 minutes ago ubuntu01 cc8c0601370d centos:latest "/bin/bash" 13 minutes ago Exited (0) 12 minutes ago centos01
53.
Docker コンテナ管理 起動中の
centos02コンテナを停止 Docker コンテナの削除 $ sudo docker stop centos02 $ sudo docker stop [container ID で指定することも可能] $ sudo docker rm centos02 $ sudo docker rm [container ID で指定することも可能]
54.
カスタム Docker イメージ作成 Docker コンテナ Docker イメージ Docker イメージ docker
run docker commit Docker コンテナ docker run httpd install httpd 起動 with httpd
55.
カスタム Docker イメージ作成
centos03 コンテナを作成して bashで起動 Dockerコンテナのシェルに入る centos03コンテナに httpd をインストール Ctrl+p+q で Dockerコンテナをデタッチ [コンテナ内のbashで操作] # yum install -y httpd $ sudo docker run -it --name centos03 centos:latest /bin/bash ※社内ネットワークを経由する場合は、コンテナ内部のサーバに対する Proxy設定が必要。
56.
カスタム Docker イメージ作成
centos03 コンテナを停止 Apache をインストールした centos03 コンテ ナから「hoge/httpd」という名前の新たな Dockerイメージを作成 $ sudo docker stop centos03 $ sudo docker commit centos03 hoge/httpd
57.
カスタム Docker イメージ作成
docker commit コマンド書式 # docker commit ¥ {コンテナ名|コンテナID} ¥ [ユーザ名/]イメージ名
58.
カスタム Docker イメージ作成
docker imagesで、作成したイメージを確認 $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE hoge/httpd latest 140390d72115 13 seconds ago 311.2 MB centos latest 0114405f9ff1 6 hours ago 229.6 MB ubuntu latest d0955f21bf24 3 weeks ago 192.7 MB
59.
カスタム Docker イメージ作成
作成した hoge/httpd イメージを元に、web01 というコンテナを作成、バックグラウンドモー ドで起動する docker ps で起動確認 ホストの8080ポートにアクセスしてテスト! $ curl localhost:8080 $ sudo docker run -d -p 8080:80 --name web01 ¥ hoge/httpd /usr/sbin/httpd -D FOREGROUND
60.
Docker コンテナ管理 バックグラウンドで起動中の
web01コンテナに接続 バックグラウンドで起動中の web01コンテナを停止 $ sudo docker exec -it web01 /bin/bash $ sudo docker stop web01 $ sudo docker stop [container ID で指定することも可能]
61.
Docker Hub でイメージ共有
Docker Hub のアカウントを作成 Docker Hubにログイン Docker Hub に先ほど作成した「hoge/httpd」 イメージをPUSH $ sudo docker login $ sudo docker push hoge/httpd https://www.docker.com/
62.
実践編
63.
Dockerfile Dockerには、Dockerコンテナ の構成情報をテキスト形式で記 述できる「Dockerfile」という 仕様がある。 そして、Dockerfile を解釈し Dockerイメージを作成する 「docker build」コマンドが用 意されている。 Dockerfile docker build Docker イメージ
64.
Dockerfile FROM ubuntu MAINTAINER hoge<hoge@sample.net> RUN
apt-get install -y httpd EXPOSE 80 CMD ["httpd", "-D" "FOREGROUND"] ① ubuntu(latest)をベースとする ② 管理者はhoge <hoge@sample.net> ③ httpdをインストール ④ ポート80番をオープン ⑤ httpdサーバをフォアグランドに起動(上書き可能) 以上の手順が実行された Docker イメージを作成
65.
Dockerfile コマンド 意味 FROM 元となるDockerイメージの指定 MAINTAINER
作成者の情報 RUN コマンドの実行 ADD ファイル/ディレクトリの追加 CMD コンテナーの実行コマンド 1 ENTRYPOINT コンテナーの実行コマンド 2 WORKDIR 作業ディレクトリの指定 ENV 環境変数の指定 USER 実行ユーザーの指定 EXPOSE ポートのエクスポート VOLUME ボリュームのマウント
66.
Dockerイメージのビルド Dockerfile をビルドし
hoge/ubu:1.0 という Dockerイメージを生成 $ cd [Dockerfileがあるディレクトリ] $ sudo docker build –t hoge/app:1.0 ./ Dockerfile docker build Docker イメージ hoge/app:1.0
67.
Dockerイメージのビルド docker build
書式 # docker build ¥ [-t ユーザ名/イメージ名[:タグ名]] ¥ Dockerfile格納ディレクトリ
68.
引用 : http://www.slideshare.net/durdn/be-a-better-developer-with-docker Dockerイメージのビルド
69.
Data Volume 複数のコンテナ間で永続的なデータや共有データ を扱うための特別なヴォリューム (ディレクトリ)。 Data Volume
に対する変更は直接反映され、イ メージの変更に含まれない。 Data Volume は参照するコンテナがなくなって も存続する。
70.
Data Volume ホストとのヴォリューム共有 引用 :
http://www.slideshare.net/durdn/be-a-better-developer-with-docker
71.
Data Volume ホストの
/opt/test-app/ をコンテナの /app と してマウントさせる $ sudo docker run -it -v /opt/test-app:/app ubuntu /bin/bash ホスト側 マウントされるディレクトリ コンテナ側 マウントディレクトリ
72.
Data Volume Container コンテナ間のヴォリューム共有 引用
: http://www.slideshare.net/durdn/be-a-better-developer-with-docker -v /var/volume1 -v /var/volume2 Data Volume Container
73.
Data Volume Container
/var/volume を共有するデータボリュームコン テナを生成+起動する 上記コンテナの /var/volume を共有するコン テナを生成+起動する $ sudo docker run -it -v /var/volume --name vol1 ubuntu /bin/bash $ sudo docker run -it --volumes-from vol1 ubuntu /bin/bash FROM ubuntu ... ... VOLUME ["/var/volume"] CMD ["/bin/bash"]
74.
Data Volume Container ユーザデータなど、壊せない情報の格納場所とし て
Data Volume Container を利用する。 Webサーバ コンテナ APサーバ コンテナ DBサーバ コンテナ Data Volume コンテナ ログ保存先 Volume DB データ格納 Volume
75.
ネットワークポートマッピング コンテナを起動するときに、コンテナ内部で使用 するポートを、任意のホスト側ポート番号 (49152以降推奨)に割り当てることができる。 ホスト側のポート番号は、49000 ~ 49900
の 範囲で自動的にランダムな番号を割り当てたり、 ユーザが任意の番号を指定したりすることが可能。 ホスト コンテナ IP :X PORT:X IP :Y PORT:Y ポート マッピング
76.
ネットワークポートマッピング コンテナ内でオープンしているポートをホスト 側ランダムなポート番号にマッピング コンテナのポート22がホストのどのポートに マッピングされたか知る方法 $
sudo docker run -d -P ubuntu:latest /usr/sbin/sshd -D $ sudo docker port [コンテナID] 22 $ sudo docker run -d -p 22 ubuntu:latest /usr/sbin/sshd -D
77.
ネットワークポートマッピング コンテナのポート22をユーザが指定するホスト 側ポート番号2222にマッピング $ sudo
docker run -d -p 2222:22 ubuntu:latest /usr/sbin/sshd -D ホスト コンテナ IP :X PORT:2222 IP :Y PORT:22 ポート マッピング ホスト側ポート コンテナ側ポート
78.
コンテナ・リンク 複数のコンテナ間で、専用のネットワークを構築 することができる。 コンテナA (コンテナBに接続) コンテナB (リンク元)
79.
コンテナ・リンク リンク元のコンテナA コンテナAに接続するコンテナB $
sudo docker run –d --name pg ubuntu:latest postmaster -D /usr/local/pgsql/data $ sudo docker run -d --link pg:db ubuntu:latest /someService コンテナB 環境変数 DB_PORT_5432_TCP_ADDR=172.17.0.2 DB_PORT=tcp://172.17.0.2:5432 DB_5432_TCP=tcp://172.17.0.2:5432 DB_PORT_5432_TCP_PORT=5432 /etc/hosts 172.17.0.2 db
80.
デモ(その4) Dockerを使用した 書籍管理アプリケーション実行環境構築
81.
デモ環境 ホスト cnetos 6.6 /
64bit Kernel 2.6.32-504.el6.x86_64 docker version 1.4.1, build 5bc2ff8/1.4.1 基本編と 同じ環境
82.
ホストサーバ Data Volume 完成イメージ APサーバ コンテナ Tomcat DBサーバ コンテナ postgresql データベース ファイル ログ ファイル ポート フォワード 8080:8080 コンテナ リンク DB接続 利用者 簡易版書籍管理 アプリケーション
83.
Data Volume DBサーバ構築 postgreSQL 構築用 Dockerfile docker build PostgreSQL Dockerイメージ hoge/postgres:1.0 DB初期化用 コンテナ データベースファイル PostgreSQL 実行コンテナ DBファイル 初期化
84.
DBサーバのDockerfile DBサーバ構築 FROM centos:latest MAINTAINER
hoge <hoge@mail.jp> # postgerSQL セットアップ RUN yum -y install postgresql-server # PORT 開放 EXPOSE 5432 # コンテナ実行コマンド CMD su - postgres -c "postgres -D /var/lib/pgsql/data"
85.
DBサーバイメージ(hoge/postgres)ビルド Data
Volume を格納するディレクトリをホスト に作成 DBサーバ構築 $ sudo docker build -t hoge/postgres:1.0 [dockerfile格納DIR] $ sudo mkdir -p /docker_mnt/pgsql/data
86.
DBサーバ構築 Postgresql初期セットアップ用コンテナ起動 Postgresqlの初期セットアップ $
sudo docker run -it --rm ¥ -v /docker_mnt/pgsql/data:/var/lib/pgsql/data ¥ hoge/postgres:1.0 /bin/bash [コンテナ内のbashで操作] # chown -R postgres:postgres /var/lib/pgsql/data # su - postgres $ initdb --encoding=UTF8 --no-locale $ pg_ctl -D /var/lib/pgsql/data start $ psql・・ 必要に応じてDBオブジェクトを構築し当該コンテナを終了 PostgreSQL初期セットアップは、Data Volumeに格納されるデータベースファイルを作成するものである。 このため、本作業は最初に一度だけ行えば良い。
87.
DBサーバ構築 DBサーバコンテナ生成してPostgrrSQLを起動 $ sudo
docker run -d ¥ -v /docker_mnt/pgsql/data:/var/lib/pgsql/data ¥ -p 5432:5432 --name db01 hoge/postgres:1.0 実行コマンドの指定がない場合 Dockerfile の CMD で定義した コマンドが起動する
88.
Data Volume APサーバ構築 Tomcat 構築用 Dockerfile docker build Tomcat Dockerイメージ hoge/tomcat:1.0 ログファイル Tomat 実行コンテナ
89.
APサーバ構築 APサーバのDockerfile FROM centos:latest MAINTAINER
hoge # Tomcat セットアップ RUN yum -y install tomcat RUN echo 'export CATALINA_BASE="/usr/share/tomcat"' >> /root/.bashrc # Tomcat 起動スクリプトをコピー ADD tomcat_start.sh /usr/bin/ RUN chmod a+x /usr/bin/tomcat_start.sh # 書籍管理アプリをデプロイ ADD bookmgr.war /usr/share/tomcat/webapps/ # PORT 開放 EXPOSE 8080 # コンテナ実行コマンド ENTRYPOINT ["/usr/bin/tomcat_start.sh"]
90.
APサーバ構築 (参考)tomcat_start.sh #! /bin/bash export CATALINA_BASE="/usr/share/tomcat" /usr/sbin/tomcat
start trap '/usr/sbin/tomcat stop; sleep 2; exit 0' TERM while : do sleep 1 done
91.
APサーバ構築 APサーバイメージ(hoge/tomcat)ビルド Data
Volume を格納するディレクトリをホストに作成 $ sudo docker build -t hoge/tomcat:1.0 [dockerfile格納DIR] $ sudo mkdir -p /docker_mnt/tomcat/logs $ sudo chmod a+w /docker_mnt/tomcat/logs
92.
APサーバ構築 APサーバコンテナを生成、Tomcat を起動 $
sudo docker run -d ¥ -v /docker_mnt/tomcat/logs:/usr/share/tomcat/logs ¥ -p 8080:8080 --link db01:db ¥ --name ap01 hoge/tomcat:1.0 Dockerfile の ENTRYPOINTで定義した 起動コマンドは docker run で別のコマン ドに変更することができない。
93.
活用のススメ
94.
Docker の利点 コンテナなのでオーバヘッドが少なく、動作が軽い
コンテナイメージを手軽にやり取りできる コンテナは様々な環境で等しく動く 各コンテナは、いろいろなディストリビューションや バージョンで構成できる コンテナ(インフラ)をコードで表現できる
95.
利点を生かすためには コンテナ内で動くアプリケーションは、できる だけシンプルなものであること。 複数のコンテナで動く、アプリケーションはで きるだけ疎結合に連携すること。
各アプリケーションは、ステートレスな作りで あること。 ユーザデータなどの保存先は分離できること。
96.
マイクロ・サービス ひとつのアプリケーションを、大きな一枚岩の塊ではなく、 複数の軽量なサービスを連携させたアーキテクチャで実現 する。 各サービスはそれぞれのプロセスで動き、サービス間の メッセージは、HTTP経由でAPI呼び出しされるか、 RabbitMQやZeroMQといった軽量メッセージングシステ ムによる通信で交換される。 サービスごとに言語やデータベースなどは統一されず、個 別に適切なものが選択される。また、サービスごとにデー タを持ち、統合されていない。
97.
どんなシステムに使えるか すでにWeb関連サービス では主流になりつつある。 2014年5月の段階で『自社のサービスは全てDocker
のようなコンテナで動い ており、旧来の仮想マシンは使用していない』と発表。 近い将来、科学技術計算、情報通信、製造、流通など 様々な分野での活用が予想されるが、うまく活用するた めには、シンプルで小さなアプリケーションであること が重要。 複雑で大きなモジュールの塊から、疎結合で自律的な小 さなアプリケーション群を連携させるマイクロサービス へ転換できるかどうかが鍵!!
98.
商用として利用できますか? Yes! 既にWeb系のサービスはコンテナの活用 が進んでいる。
しかし、他のオープンソース同様、何か問題が あった場合は、自分たちで解決する必要がある。 製品に詳しい技術者の育成が重要。
99.
なにから始めるか
100.
社内 Docker リポジトリ 結合試験環境1系 結合試験環境2系 Docker活用のススメ 開発環境 (開発PC) アプリケーション コンテナイメージ ステージング環境 アプリケーション コンテナイメージ アプリケーション コンテナイメージ アプリケーション コンテナイメージ アプリケーション コンテナイメージ
101.
社内 git/svn リポジトリ 結合試験環境1系 Docker活用のススメ 開発環境 (開発PC) アプリケーション コンテナイメージ Dockerfile Dockerfile 結合試験環境N系 アプリケーション コンテナイメージ
102.
自動テスト環境 社内 git/svn リポジトリ 結合試験環境1系 Docker活用のススメ 開発環境 (開発PC) アプリケーション コンテナイメージ アプリケーション コンテナイメージ Dockerfile Dockerfile CIサーバ Jenkins 社内 Docker リポジトリ アプリケーション コンテナイメージ 結合試験環境N系 アプリケーション コンテナイメージ
103.
104.
コンテナとは、 CPUやメモリ、プロセス空 間、ディスク、ネットワークなどを隠蔽す るOS(Linuxカーネル)が持つ機能を使っ て実現している。 コンテナを簡単に使えるようにしたツール のひとつにLXCがある。
105.
Docker は、LXCを拡張してコンテナを更に 簡単に扱えるようにしたツール。 Docker Hubというリポジトリを経由すると、 インターネットを介して、コンテナをポー タブルにできる。 Dockerfile
という形式で、サーバインフラ をコード化することができる。
106.
Docker をうまく活用するには、それなりの アーキテクチャを検討する必要がある。 つまり、疎結合で自律的な小さなアプリ ケーション群を連携させるマイクロサービ ス型アーキテクチャであることが重要。
107.
Docker は、主要なベンダを巻き込みながら、 非常に影響力の大きなエコシステムを構築 しており、今後ますます発展することが見 込まれる。 まずは、開発業務や検証業務での活用をお 勧め。
108.
ぜひ自分でも Docker を インストールしてさわっ て見て下さい!!
109.
これを機会に、複数 の Docker使い が誕 生することを期待し ています
110.
期待しています
111.
おしまい ご静聴ありがとう ございました
Download now