Suche senden
Hochladen
Wardenで学ぶコンテナの基礎
•
3 gefällt mir
•
1,350 views
H
Hiroaki_UKAJI
Folgen
第25回PaaS勉強会 「Wardenで学ぶコンテナの基礎」発表資料
Weniger lesen
Mehr lesen
Präsentationen & Vorträge
Melden
Teilen
Melden
Teilen
1 von 47
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
すごく分かるwarden
すごく分かるwarden
i_yudai
マスタリング DEA/NG 第2版
マスタリング DEA/NG 第2版
i_yudai
Personal Cloud Automation
Personal Cloud Automation
Etsuji Nakai
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
Etsuji Nakai
Using Kubernetes on Google Container Engine
Using Kubernetes on Google Container Engine
Etsuji Nakai
OSvの概要と実装
OSvの概要と実装
Takuya ASADA
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
Etsuji Nakai
Mastodonインスタンスをセットアップできるスタートアップスクリプトについて
Mastodonインスタンスをセットアップできるスタートアップスクリプトについて
さくらインターネット株式会社
Empfohlen
すごく分かるwarden
すごく分かるwarden
i_yudai
マスタリング DEA/NG 第2版
マスタリング DEA/NG 第2版
i_yudai
Personal Cloud Automation
Personal Cloud Automation
Etsuji Nakai
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
Etsuji Nakai
Using Kubernetes on Google Container Engine
Using Kubernetes on Google Container Engine
Etsuji Nakai
OSvの概要と実装
OSvの概要と実装
Takuya ASADA
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
Etsuji Nakai
Mastodonインスタンスをセットアップできるスタートアップスクリプトについて
Mastodonインスタンスをセットアップできるスタートアップスクリプトについて
さくらインターネット株式会社
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Etsuji Nakai
Pacemaker NextGen OSC2012TokyoFall-20120908
Pacemaker NextGen OSC2012TokyoFall-20120908
ksk_ha
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
Etsuji Nakai
第7回oss貢献者賞 森-20120316
第7回oss貢献者賞 森-20120316
ksk_ha
仮想化環境での利用者公平性
仮想化環境での利用者公平性
Takuya ASADA
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西
Masahide Yamamoto
OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!
ksk_ha
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
Etsuji Nakai
痛い目にあってわかる HAクラスタのありがたさ
痛い目にあってわかる HAクラスタのありがたさ
Takatoshi Matsuo
MINCS – containers in the shell script
MINCS – containers in the shell script
Masami Hiramatsu
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよ
npsg
UEFI時代のブートローダ
UEFI時代のブートローダ
Takuya ASADA
HAクラスタで PostgreSQLレプリケーション構成の 高可用化
HAクラスタで PostgreSQLレプリケーション構成の 高可用化
Takatoshi Matsuo
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
Taisuke Yamada
第4回Linux-HA勉強会資料 Pacemakerの紹介
第4回Linux-HA勉強会資料 Pacemakerの紹介
ksk_ha
Linux-HA Japanプロジェクトのこれまでとこれから
Linux-HA Japanプロジェクトのこれまでとこれから
ksk_ha
141030ceph
141030ceph
OSSラボ株式会社
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例
kazuhcurry
Pacemakerを使いこなそう
Pacemakerを使いこなそう
Takatoshi Matsuo
cloudpack負荷職人結果レポート(サンプル)
cloudpack負荷職人結果レポート(サンプル)
iret, Inc.
PEZY-SC2上における倍々精度Rgemmの実装と評価
PEZY-SC2上における倍々精度Rgemmの実装と評価
Toshiaki Hishinuma
Gingerbread
Gingerbread
android sola
Weitere ähnliche Inhalte
Was ist angesagt?
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Etsuji Nakai
Pacemaker NextGen OSC2012TokyoFall-20120908
Pacemaker NextGen OSC2012TokyoFall-20120908
ksk_ha
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
Etsuji Nakai
第7回oss貢献者賞 森-20120316
第7回oss貢献者賞 森-20120316
ksk_ha
仮想化環境での利用者公平性
仮想化環境での利用者公平性
Takuya ASADA
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西
Masahide Yamamoto
OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!
ksk_ha
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
Etsuji Nakai
痛い目にあってわかる HAクラスタのありがたさ
痛い目にあってわかる HAクラスタのありがたさ
Takatoshi Matsuo
MINCS – containers in the shell script
MINCS – containers in the shell script
Masami Hiramatsu
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよ
npsg
UEFI時代のブートローダ
UEFI時代のブートローダ
Takuya ASADA
HAクラスタで PostgreSQLレプリケーション構成の 高可用化
HAクラスタで PostgreSQLレプリケーション構成の 高可用化
Takatoshi Matsuo
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
Taisuke Yamada
第4回Linux-HA勉強会資料 Pacemakerの紹介
第4回Linux-HA勉強会資料 Pacemakerの紹介
ksk_ha
Linux-HA Japanプロジェクトのこれまでとこれから
Linux-HA Japanプロジェクトのこれまでとこれから
ksk_ha
141030ceph
141030ceph
OSSラボ株式会社
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例
kazuhcurry
Pacemakerを使いこなそう
Pacemakerを使いこなそう
Takatoshi Matsuo
cloudpack負荷職人結果レポート(サンプル)
cloudpack負荷職人結果レポート(サンプル)
iret, Inc.
Was ist angesagt?
(20)
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Pacemaker NextGen OSC2012TokyoFall-20120908
Pacemaker NextGen OSC2012TokyoFall-20120908
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
第7回oss貢献者賞 森-20120316
第7回oss貢献者賞 森-20120316
仮想化環境での利用者公平性
仮想化環境での利用者公平性
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西
OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
痛い目にあってわかる HAクラスタのありがたさ
痛い目にあってわかる HAクラスタのありがたさ
MINCS – containers in the shell script
MINCS – containers in the shell script
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよ
UEFI時代のブートローダ
UEFI時代のブートローダ
HAクラスタで PostgreSQLレプリケーション構成の 高可用化
HAクラスタで PostgreSQLレプリケーション構成の 高可用化
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
第4回Linux-HA勉強会資料 Pacemakerの紹介
第4回Linux-HA勉強会資料 Pacemakerの紹介
Linux-HA Japanプロジェクトのこれまでとこれから
Linux-HA Japanプロジェクトのこれまでとこれから
141030ceph
141030ceph
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例
Pacemakerを使いこなそう
Pacemakerを使いこなそう
cloudpack負荷職人結果レポート(サンプル)
cloudpack負荷職人結果レポート(サンプル)
Ähnlich wie Wardenで学ぶコンテナの基礎
PEZY-SC2上における倍々精度Rgemmの実装と評価
PEZY-SC2上における倍々精度Rgemmの実装と評価
Toshiaki Hishinuma
Gingerbread
Gingerbread
android sola
Terraformディレクトリ構成のベスプラを考えてみた
Terraformディレクトリ構成のベスプラを考えてみた
山下 達也
Android デバッグ小ネタ
Android デバッグ小ネタ
l_b__
osoljp 2011.08
osoljp 2011.08
@ otsuka752
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
Ryosuke IWANAGA
Ruby on Rails3 Tutorial Chapter3
Ruby on Rails3 Tutorial Chapter3
Sea Mountain
A_road_to_AMBER_simulations_ver_1.0
A_road_to_AMBER_simulations_ver_1.0
Satoshi Kume
MongoDB on AWS
MongoDB on AWS
Ryuji Tamagawa
OpenBSD/luna88k yearly progress report (from May 2017 to May 2018)
OpenBSD/luna88k yearly progress report (from May 2017 to May 2018)
Kenji Aoyama
OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)
Satoshi Shimazaki
Open VZ
Open VZ
Kazuaki Fujikura
about DakotagUI
about DakotagUI
Etsuji Nomura
NetApp Session at PEX Tokyo 2013
NetApp Session at PEX Tokyo 2013
NetApp Japan
システムコール
システムコール
Masahiro Tomita
CCMSI計算科学技術特論A (2015) 第7回 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CCMSI計算科学技術特論A (2015) 第7回 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
Computational Materials Science Initiative
Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理
Takeshi Arabiki
about dakota6.7 gui
about dakota6.7 gui
Etsuji Nomura
GNS3上の仮想アプライアンス+GitLabRunner+BDDによるテスト自動化
GNS3上の仮想アプライアンス+GitLabRunner+BDDによるテスト自動化
Shigeru Tsubota
Lxc cf201207-presen
Lxc cf201207-presen
Kouhei Maeda
Ähnlich wie Wardenで学ぶコンテナの基礎
(20)
PEZY-SC2上における倍々精度Rgemmの実装と評価
PEZY-SC2上における倍々精度Rgemmの実装と評価
Gingerbread
Gingerbread
Terraformディレクトリ構成のベスプラを考えてみた
Terraformディレクトリ構成のベスプラを考えてみた
Android デバッグ小ネタ
Android デバッグ小ネタ
osoljp 2011.08
osoljp 2011.08
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
Ruby on Rails3 Tutorial Chapter3
Ruby on Rails3 Tutorial Chapter3
A_road_to_AMBER_simulations_ver_1.0
A_road_to_AMBER_simulations_ver_1.0
MongoDB on AWS
MongoDB on AWS
OpenBSD/luna88k yearly progress report (from May 2017 to May 2018)
OpenBSD/luna88k yearly progress report (from May 2017 to May 2018)
OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)
Open VZ
Open VZ
about DakotagUI
about DakotagUI
NetApp Session at PEX Tokyo 2013
NetApp Session at PEX Tokyo 2013
システムコール
システムコール
CCMSI計算科学技術特論A (2015) 第7回 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CCMSI計算科学技術特論A (2015) 第7回 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理
about dakota6.7 gui
about dakota6.7 gui
GNS3上の仮想アプライアンス+GitLabRunner+BDDによるテスト自動化
GNS3上の仮想アプライアンス+GitLabRunner+BDDによるテスト自動化
Lxc cf201207-presen
Lxc cf201207-presen
Wardenで学ぶコンテナの基礎
1.
Wardenで学ぶコンテナの基礎 Hiroaki UKAJI
2.
こんな⼈向け コンテナって何?
3.
コンテナ?
4.
コンテナ? ユーザ空間の隔離 ⾼密度化 VMより軽い リソース分離 LXC 起動が速い 名前空間
5.
コンテナ? ・・・?
6.
コンテナがなぜ必要か (Baremetal) Machine OS
7.
コンテナがなぜ必要か ある環境の上で2つのAppを開発します (Baremetal) Machine OS
8.
コンテナがなぜ必要か (Baremetal) Machine OS App1 App2
9.
コンテナがなぜ必要か でもこの図はちょっとマズイ なぜならば・・・ (Baremetal) Machine OS App1 App2
10.
コンテナがなぜ必要か (Baremetal) Machine OS App1 App2 / |--
: |-- home/ | |-- usr1/ | | `-- app1/ | `-- usr2/ | `-- app2/ | : $ rm -rf /home/usr2/app2/↵ ⼀緒のマシン上での開発は ちょっと⼼配
11.
コンテナがなぜ必要か 何か対策を・・・ (Baremetal) Machine OS
12.
コンテナがなぜ必要か すぐに思いつくのは・・・ UNIX User? (Baremetal) Machine OS usr1 App1 usr2 App2
13.
コンテナがなぜ必要か しかしUNIX Userでは… (Baremetal) Machine OS usr1 App1 App2
14.
でもこれはちょっとやりたくない 作るの時間かかるし・・・ 重いし・・・ コンテナがなぜ必要か (Baremetal) Machine OS/Hypervisor VM VM OS
OS App1 App2
15.
コンテナがなぜ必要か (Baremetal) Machine OS
16.
欲しいものは Appを隔離する「箱」のようなもの (Baremetal) Machine OS App1 App2
17.
欲しいものは 「箱」= 環境の隔離 + リソースの制限 (Baremetal)
Machine OS App1 App2
18.
欲しいものは 「箱」= 環境の隔離 + リソースの制限 (Baremetal)
Machine OS App1 App2 これがコンテナ
19.
wardenでは? 環境の隔離 リソースの制限
20.
wardenでは? 環境の隔離 リソースの制限 ||
|| namespace cgroup ※他のコンテナでも使われてます
21.
まずは隔離環境の作成から 環境の隔離 リソースの制限 ||
|| namespace cgroup
22.
namespace 空間を隔離し名前別に管理するもの
23.
namespace namespace⼀覧 ipc, mnt, net,
pid, usr, utsの6種類 (各リソースにタグ付けられたID的なもの) $ readlink /proc/$$/ns/*↵ ipc:[4026531839] mnt:[4026531840] net:[4026531956] pid:[4026531836] user:[4026531837] uts:[4026531838] OS起動時にすでにdefault名前空間が決定
24.
namespace ‘unshare’コマンドで切り替えが可能 net:[4026531956] ↓ net:[4026532257] $ readlink /proc/$$/ns/net↵ net:[4026531956] $
sudo unshare --net /bin/bash↵ $ readlink /proc/$$/ns/net↵ net:[4026532257] unshare --net
25.
namespace net名前空間をunshareした時は… network環境「だけ」が切り替わります $ ls↵ tmp/ warden/
workspace/ $ ifconfig eth0↵ eth0 Link encap:Ethernet HWaddr 08:00:27:95:c2:a1 inet addr:10.0.2.15 Bcast:10.0.2.255 : : $ sudo unshare --net /bin/bash↵ $ ls↵ tmp/ warden/ workspace/ $ ifconfig eth0↵ eth0: error fetching interface information: Device not found
26.
namespace (Baremetal) Machine OS unshare --net <command>
された空間 || fileはそのまま⾒えるのにeth0は⾒えない空間 eth0
27.
namespace @ warden
28.
namespace @ warden warden>
create (Baremetal) Machine OS unshare -m {$target}/setup.sh unshare(CLONE_NEWNS)
29.
namespace @ warden >> ! host#
readlink /proc/$$/ns/*↵ ipc:[4026531839] mnt:[4026531840] net:[4026531956] pid:[4026531836] user:[4026531837] uts:[4026531838] host# bin/wsh /bin/bash↵ container# readlink /proc/$$/ns/*↵ ipc:[4026532199] mnt:[4026532197] net:[4026532202] pid:[4026532200] user:[4026531837] uts:[4026532198] ※ホストマシン側 ※コンテナ側
30.
namespace @ warden warden>
create (Baremetal) Machine OS ipc:proc間通信オブジェクト mnt:マウント操作 net:ネットワーク系リソース の隔離空間 pid:プロセスID uts:ホスト・ドメイン名
31.
次に隔離環境の操作 環境の隔離 リソースの制限 ||
|| namespace cgroup
32.
cgroup プロセスのグループを作り ⼀括した管理を⾏うもの ※cgroup = control
group
33.
cgroup controlできるのは cpuやmemoryの制限 プロセスのstart&stop等々・・・ $ lssubsys↵ cpuset cpu cpuacct memory devices freezer blkio perf_event hugetlb
34.
cgroup 各サブシステムはこんな感じ tasks ⇒ pid freezer.state ⇒
状態 $ cd /sys/fs/cgroup/freezer↵ $ tree -L 2↵ . |-- : |-- tasks `-- user/ |-- 1000.user/ |-- freezer.state |-- : `-- tasks 1 2 : 23788 THAWED
35.
cgroup controlの方法は 1. グループ用ディレクトリを作成 2. tasksにpidを登録
3. freezer.stateで状態を制御 # cd /sys/fs/cgroup/freezer↵ # mkdir testfs↵ # echo 18327 > testfs/tasks↵ # echo 18336 >> testfs/tasks↵ # echo FROZEN > testfs/freezer.state↵ FROZEN これで pid=18327 pid=18336 のprocが停止
36.
cgroup 1. グループ用ディレクトリを作成 $ cd
/sys/fs/cgroup/freezer↵ $ tree -L 2↵ . |-- freezer.state |-- tasks |-- testfs01/ | |-- freezer.state | `-- tasks `-- testfs02/ |-- freezer.state `-- tasks 親DIRと同様のfileが自動生成 (default時)全PIDは親DIRに登録
37.
cgroup 2. tasksにpidを登録
$ cd /sys/fs/cgroup/freezer↵ $ tree -L 2↵ . |-- freezer.state |-- tasks |-- testfs01/ | |-- freezer.state | `-- tasks `-- testfs02/ |-- freezer.state `-- tasks $ echo 3861 >> testfs01/tasks 等でPIDを書き込み 下で書き込まれたPIDは自動的に defaultの場所から消失
38.
cgroup 3. freezer.stateで状態を制御 tasksに登録されたprocだけがFROZENに $ cd
/sys/fs/cgroup/freezer↵ $ tree -L 2↵ . |-- freezer.state |-- tasks |-- testfs01/ | |-- freezer.state | `-- tasks `-- testfs02/ |-- freezer.state `-- tasks $ cat tasks 3861 $ echo FROZEN > freezer.state FROZEN
39.
cgroup <制限したいリソース> |-- <tasks(PID)> |-- <status> `--
SubDirectory/ |-- <tasks(PID)> `-- <status>①制限したい項目に サブDIR作っておく ②制限かけたいprocの PIDをtasksに書き込む ③statusで一気に制御
40.
cgroup @ warden
41.
cgroup @ warden 1. グループ用ディレクトリを作成 instance-<handle>/ …コンテナ⽣成時に出現 ($PWD=/sys/fs/cgroup/memory) . |--
memory.limit_in_bytes |-- tasks `-- instance-18fgfj7va3n/ |-- memory.limit_in_bytes `-- tasks
42.
cgroup @ warden 2.
tasksにpidを登録 tasks …defaultではdaemonのPIDのみ コンテナでproc起動すれば追加 ($PWD=/sys/fs/cgroup/memory) . |-- memory.limit_in_bytes |-- tasks `-- instance-18fgfj7va3n/ |-- memory.limit_in_bytes `-- tasks
43.
cgroup @ warden 3.
memory.limitで状態を制御 memory.limit_in_bytes …tasksに登録したprocにのみ 使⽤memoryの制限がかかる ($PWD=/sys/fs/cgroup/memory) . |-- memory.limit_in_bytes |-- tasks `-- instance-18fgfj7va3n/ |-- memory.limit_in_bytes `-- tasks
44.
cgroup @ warden warden>
limit_memory (Baremetal) Machine OS mkdir ~~~/cgroup/memory/instance-$id ! echo [コンテナ内のPID] > tasks ! (←本当はここまで前準備) echo [制限値] > memory.limit_in_bytes
45.
container container = 環境の隔離 +
リソースの制限 (Baremetal) Machine OS App1 App2
46.
container @ warden 環境の隔離
リソースの制限 || || namespace cgroup
47.
まとめ WardenコンテナはOS上に隔離環境を作る 環境を隔離するのは namespace 隔離環境の操作は cgroup
Jetzt herunterladen