Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
いまさら聞けない Linux コンテナの基礎 / KOF 2015
tenforward
November 06, 2015
Technology
6
2.6k
いまさら聞けない Linux コンテナの基礎 / KOF 2015
KOF 2015 の発表資料です。
参考となる情報にはPDF中からリンクをしていますが、資料中のリンクは Speaker Deck 上ではクリックできないので PDF をダウンロードしてご覧ください。
tenforward
November 06, 2015
Tweet
Share
More Decks by tenforward
See All by tenforward
Linux コンテナ最近の新機能 / SosaiLT 36th
tenforward
1
34
Linux カーネル 最近のコンテナ関連新機能 / TechFeed Experts Night#7
tenforward
5
2.6k
コンテナの歴史を追いながらいまいちどコンテナについておさらいしてみる / Infra Study 2nd #2
tenforward
10
3.5k
seccomp notify による安全なコンテナ実行環境 / 14th CTStudy
tenforward
0
580
cgroup v1 の内部構造 / 13th CTStudy
tenforward
1
560
cgroup v1概要 / 12th CTStudy
tenforward
2
660
最近のLinuxコンテナの進化 / TechFeed Summit #3
tenforward
3
830
歴史から紐解く Linux カーネルのコンテナ機能 / KOF2019
tenforward
3
510
歴史から紐解くLinuxカーネルのコンテナ機能 / CNDT2019
tenforward
28
7.8k
Other Decks in Technology
See All in Technology
データ分析基盤の要件分析の話(202201_JEDAI)
yabooun
0
250
メドレー エンジニア採用資料/ Medley Engineer Guide
medley
3
5.1k
DNS権威サーバのクラウドサービス向けに行われた攻撃および対策 / DNS Pseudo-Random Subdomain Attack and mitigations
kazeburo
5
1.2k
AI Builderについて
miyakemito
0
900
Exploring MapStore Release 2022.02: improved 3DTiles support and more
simboss
PRO
0
360
組織に対してSREを適用するとどうなるか
kuniim
7
2.5k
re:Invent2022 前後の Amazon EventBridge のアップデートを踏まえつつ、情シスの仕事をより楽しくしたい話。 / EventBridge for Information Systems Department
_kensh
2
720
Hatena Engineer Seminar #23 「チームとプロダクトを育てる Mackerel 開発合宿」
arthur1
0
460
💰年度末予算消化祭💰 Large Memory Instance で 画像分類してみた
__allllllllez__
0
100
あつめたデータをどう扱うか
skrb
2
160
ECテックカンファレンス2023 EC事業部のモバイル開発2023
tatsumi0000
0
300
Bill One 開発エンジニア 紹介資料
sansantech
PRO
0
110
Featured
See All Featured
A better future with KSS
kneath
230
16k
Learning to Love Humans: Emotional Interface Design
aarron
263
38k
Keith and Marios Guide to Fast Websites
keithpitt
407
21k
Product Roadmaps are Hard
iamctodd
38
7.7k
The MySQL Ecosystem @ GitHub 2015
samlambert
240
11k
Practical Orchestrator
shlominoach
178
8.9k
Fashionably flexible responsive web design (full day workshop)
malarkey
396
63k
From Idea to $5000 a Month in 5 Months
shpigford
374
44k
How to train your dragon (web standard)
notwaldorf
66
4.3k
Building an army of robots
kneath
301
40k
Designing on Purpose - Digital PM Summit 2013
jponch
108
5.9k
Unsuck your backbone
ammeep
659
56k
Transcript
͍·͞Βฉ͚ͳ͍ Linuxίϯςφͷجૅ KOF 2015 Ճ౻ହจ lxc-jp 2015-11-06 Ճ౻ହจ (lxc-jp) KOF
2015 2015-11-06 1 / 53
ࣗݾհ Ճ౻ହจ http://www.ten-forward.ws/ @ten forward http://gplus.to/tenforward https://github.com/tenforward http://d.hatena.ne.jp/defiant/ (ٕज़ϒϩά) Ճ౻ହจ
(lxc-jp) KOF 2015 2015-11-06 2 / 53
ࣗݾհ ϑΝʔεταʔόɹج൫։ൃ෦ɹॴଐ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 3 / 53
ࣗݾհ Plamo Linux ϝϯςφ LXC ͰֶͿίϯςφೖɹʔܰྔԾԽڥΛ࣮ݱ͢Δٕज़ gihyo.jp Ͱ࿈ࡌ Ճ౻ହจ (lxc-jp)
KOF 2015 2015-11-06 4 / 53
ࣗݾհ LXC ͷ։ൃʹগ͠ࢀՃ man page ͷຊޠ༁ ެࣜϖʔδ (linuxcontainers.org) ༁ όάϑΟοΫεͳͲগ͚ͩ͠ίʔυʹߩݙ
Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 5 / 53
ࠓͷඪ ίϯςφͷ֓ཁΛཧղ͢Δ Linux Χʔωϧ͕࣋ͭίϯςφ͕͏ओཁͳػೳΛ֮͑Δ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 6
/ 53
ࠓͷ༰ ίϯςφͷ֓ཁ Linux ʹ͓͚ΔίϯςφͷΈ Namespace σϞ Cgroup σϞ ωοτϫʔΫؔ࿈ػೳ (͕࣌ؒ͋Ε)
ίϯςφͰ͑Δ໘ന͍ػೳ (͕࣌ؒ͋Ε) ·ͱΊ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 7 / 53
ίϯςφ֓ཁ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 8 / 53
ίϯςφͱ ԾతͳίϯϐϡʔλɾγεςϜΛ࠶ݱ͢ΔԾϚγϯʹର ͯ͠ɺԾతͳ OS ڥΛఏڙ͢Δ ˠ OS ϨϕϧͷԾԽ Χʔωϧ͔ΒݟΔͱී௨ʹϓϩηε͕ىಈ͢Δ͚ͩ ىಈ͢ΔࡍʹִΛࢦࣔ͢Δ
ΧʔωϧͷػೳͰ (ෳͷ) ಠཱۭͨؒ͠Λ࡞Γग़͠ɼϦιʔ εΛׂɾ͢Δ ϓϩηεΛάϧʔϓԽͯ͠ଞͷάϧʔϓͱϦιʔεۭؒΛִ άϧʔϓԽͨ͠ϓϩηεʹର͢ΔϦιʔε੍ݶ ԾԽͱ͍͏ΑΓʮִԽʯͱݴͬͨ΄͏͕Θ͔Γ͍͔͢ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 9 / 53
ίϯςφͷϝϦοτ ߴີԽ͕Մೳ ىಈ͍ͯ͠Δ OS (Χʔωϧ) Ұͭ Φʔόʔϔου͕খ͍͞ ϋʔυΣΞͷԾԽ͕ෆཁ ىಈ͕ૣ͍ ԾϚγϯͷىಈͰͳ͘ɼϗετ
OS ͔ΒݟͨΒ୯ʹϓϩ ηε͕ىಈ͍ͯ͠Δ͚ͩͳͷͰɼී௨ͷϓϩάϥϜ͕ىಈ͢Δ ͷͱ΄ͱΜͲมΘΒͳ͍ ඞͣ͠γεςϜΛಈ͔͢ඞཁͳ͍ (ΞϓϦέʔγϣϯί ϯςφ) ྫ͑ίϯςφͰ httpd ͷΈ͕ಈ͍͍ͯΔ ίϯςφʹϝϞϦΛݻఆతʹׂΓͯΔඞཁ͕ͳ͍ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 10 / 53
ίϯςφͷσϝϦοτ ҟͳΔ OS ͷγεςϜ / ϓϩάϥϜಈ͔ͤͳ͍ ୯ʹϗετ OS ্Ͱϓϩηε͕ىಈ͢Δ͚ͩͳͷͰͨΓલ ΧʔωϧʹؔΘΔૢ࡞Ͱ͖ͳ͍
ىಈ͍ͯ͠ΔΧʔωϧมΘΒͳ͍ͷͰ ίϯςφຖʹϩʔυ͢ΔϞδϡʔϧΛม͑ΔͳͲ Χʔωϧͷ࣮ෳࡶʹͳΔ શͯΧʔωϧͷػೳͱ࣮ͯ͠͞Ε͍ͯΔͷͰ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 11 / 53
ࠓͷ༰ ίϯςφͷ֓ཁ Linux ʹ͓͚ΔίϯςφͷΈ Namespace σϞ Cgroup σϞ ωοτϫʔΫؔ࿈ػೳ (͕࣌ؒ͋Ε)
ίϯςφͰ͑Δ໘ന͍ػೳ (͕࣌ؒ͋Ε) ·ͱΊ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 12 / 53
Linuxʹ͓͚Δίϯςφͷ Έ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 13 / 53
(ͨ·ʹݟ͔͚Δ)ίϯςφͷྺ࢙͔Βݟͨ Linuxίϯςφʹର͢Δޡղ 1979 ʹ chroot(2) γεςϜίʔϧ͕ Version 7 Unix ʹɺ
1983 ʹ 4.2BSD ʹಋೖ͞ΕΔ 2000 ʹ FreeBSD jail ͕ FreeBSD 4.0 ʹಋೖ ʰDocker? ͦΜͳΜ jail Ͱͣͬͱલ͔ΒͰ͖ͯΔʱ(Docker Γ্͕͖ͬͯͨ࣌ͷΦοαϯͷ) ˠ ʷؒҧ͍ 2005 ʹ Solaris Containers ొ 2008 ʹ Linux ʹ Cgroup ͕ಋೖ ʰ͜ΕͰ Linux Ͱ͍ͭʹίϯςφ͕ՄೳʹͳΓ·ͨ͠ʱ ˠʷؒҧ͍ 2014 Docker 1.0 ϦϦʔε (LXC 1.0 ϦϦʔε) ʰCgroup ͷొͰ Linux Ͱίϯςφ͕Մೳʹʯ͕ؒҧ͍ͳཧ༝ ͜ͷޙΘ͔Γ·͢ :-) Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 14 / 53
Linuxʹ͓͚ΔίϯςφΧʔωϧʹʰίϯ ςφʱͱ͍͏୯Ұͷػೳ͕࣮͞Ε࣮ͯݱ͠ ͍ͯΔΘ͚Ͱ͋Γ·ͤΜ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 15 /
53
Linux ͰίϯςφΛ࣮ݱ͢ΔͨΊͷػೳ Linux Χʔωϧʹؚ·ΕΔ৭ʑͳػೳΛΈ߹Θͤͯίϯςφ ڥΛ࡞͢ΔɻͦΕͧΕͷػೳίϯςφઐ༻ͷػೳͱ͍͏Θ͚ Ͱͳ͍ɻ ϓϩηεΛάϧʔϓԽͯ͠ଞͷάϧʔϓͱִ OS Ϧιʔεͷִ ˠ
Namespace (໊લۭؒ) άϧʔϓԽͨ͠ϓϩηεʹର͢ΔϦιʔε੍ݶ ϗετͷཧϦιʔεʹର͢Δ੍ݶ ˠ Cgroup (control group) Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 16 / 53
LinuxͰίϯςφΛ࣮ݱ͢ΔͨΊͷػೳ ͦͷଞ ωοτϫʔΫ (veth, macvlan ͳͲ) έʔύϏϦςΟ chroot (pivot root)
bind mount Checkpoint/Restore (CRIU) ͳͲͳͲ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 17 / 53
Linuxͷίϯςφ࣮ྫ Docker (libcontainer) Docker தͷίϯςφΛѻ͏ͨΊͷϥΠϒϥϦ͕ libcontainerɻΞϓϦ έʔγϣϯίϯςφͷ࣮ߦʹಛԽɻ LXC/LXD Ubuntu Λத৺ʹ։ൃɻओʹγεςϜίϯςφΛ࣮ߦ͢Δ͜ͱΛલఏʹ࡞
ΒΕ͍ͯΔ͕ɺΞϓϦέʔγϣϯίϯςφͷ࣮ߦՄೳɻඇಛݖίϯςφ ͕࣮ߦͰ͖Δɻ OpenVZ Linux ͷίϯςφ࣮ͱͯ͠ݹ͔͘Β͋Δ࣮ͷͻͱͭɻ2000 ͝Ζ ͔ΒɻΧʔωϧʹύονΛద༻͢ΔɻΧʔωϧʹ࣮͞Ε͍ͯΔίϯςφ ؔ࿈ػೳ OpenVZ ༝དྷͷػೳ͕ଟ͋ΔɻOpenVZ Λϕʔεʹͨ͠ ༻൛ Virtuozzo ͕ଘࡏ͢Δɻ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 18 / 53
Linuxͷίϯςφ࣮ྫ rkt CoreOS ͕ࣾ։ൃ͢ΔΞϓϦέʔγϣϯίϯςφͷϥϯλΠϜɻ systemd ͝ଘ Linux ͚ͷ࠷ۙओྲྀͱͳͬͨ init ࣮ͷͻͱͭɻίϯςφΛѻ͏
ίϚϯυΈแ͍ͯ͠Δ MINCS γΣϧεΫϦϓτͰॻ͔Εͨίϯςφ࣮ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 19 / 53
ࠓͷ༰ ίϯςφͷ֓ཁ Linux ʹ͓͚ΔίϯςφͷΈ Namespace σϞ Cgroup σϞ ωοτϫʔΫؔ࿈ػೳ (͕࣌ؒ͋Ε)
ίϯςφͰ͑Δ໘ന͍ػೳ (͕࣌ؒ͋Ε) ·ͱΊ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 20 / 53
Linuxʹ͓͚ΔίϯςφͷΈ Namespace Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 21 / 53
Namespace(໊લۭؒ) ִ͍ͨ͠ OS Ϧιʔε͝ͱʹ Namespace ͕४උ͞ΕΔ Ұ෦ͷ Namespace ͚ͩ༻ִͯ͠ڥΛ࡞Δ͜ͱ͕Ͱ͖Δ Ճ౻ହจ
(lxc-jp) KOF 2015 2015-11-06 22 / 53
Namespace ͷछྨ (1) Mount Namespace: 2.4.19 ϓϩηε͔Βݟ͍͑ͯΔϚϯτͷू߹ɼૢ࡞Λ͢Δɽ Namespace ͷ mount,
umount ଞͷ Namespace ʹӨ ڹ͠ͳ͍ (ࢀߟ) Ϛϯτ໊લۭؒΛద༻͢Δ (IBM developerWorks) UTS Namespace: 2.6.19 ϗετ໊ͳͲɼuname(2) ͕ฦ͢ͷू߹Λɽ setdomainname(2), sethostname(2) Ͱ Namespace ͷ ͷΈมߋͰ͖Δ PID Namespace: 2.6.24 PID ۭؒͷɽ৽͍͠ PID Namespace Ͱ PID 1 ͔Β࢝ ·Δ PID ׂ͕ΓͯΒΕΔɽ͔Βࢠͷ PID Namespace ݟ͑Δ (ͷۭؒͷ PID Λ࣋ͭ) ͕ɼࢠ͔Βݟ͑ͳ͍ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 23 / 53
Namespace ͷछྨ (2) IPC Namespace: 2.6.19 SysV IPC ΦϒδΣΫτɼPOSIX ϝοηʔδΩϡʔͷִ
User Namespace: 2.6.23 ˜ 3.8 ಠཱͨ͠ UID/GID ۭؒͱ֎෦ۭؒͷϚοϐϯά (ྫ͑ɼִ ۭؒͰ uid/gid 0/0ɼ֎෦Ͱ 1000/1000 ͱ͔Մೳʹ ͳΔ) Network Namespace: 2.6.26 ωοτϫʔΫϦιʔεͷִɽωοτϫʔΫσόΠεɼΞυϨ εɼϧʔςΟϯάςʔϒϧɼιέοτɼϑΟϧλϦϯά Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 24 / 53
Namespace ͷૢ࡞ (γεςϜίʔϧ) clone(2) Ͱ৽͍͠ϓϩηε Λੜ unshare(2) Ͱ৽͍͠ϓϩηεΛੜͤͣʹ࣮ߦίϯςΩετ Λ੍ޚ͢Δ setns(2)
ͰϓϩηεΛطଘ ͷ Namespace ʹؔ࿈͚Δ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 25 / 53
NamespaceσϞ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 26 / 53
ࠓͷ༰ ίϯςφͷ֓ཁ Linux ʹ͓͚ΔίϯςφͷΈ Namespace σϞ Cgroup σϞ ωοτϫʔΫؔ࿈ػೳ (͕࣌ؒ͋Ε)
ίϯςφͰ͑Δ໘ന͍ػೳ (͕࣌ؒ͋Ε) ·ͱΊ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 27 / 53
Linuxʹ͓͚ΔίϯςφͷΈ Cgroup Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 28 / 53
Cgroupͱ ϓϩηεΛάϧʔϓԽ͠ɺάϧʔϓʹରͯ͠Ϧιʔε੍ݶΛߦ͏ɻ ίϯςφઐ༻ͷΈͰͳ͍ɻ Cgroup ͷಛ ػೳ͝ͱʹαϒγεςϜʹ͔ΕΔ cgroupfs ΛϚϯτͯ͠σΟϨΫτϦͰάϧʔϓΛද͢ ϓϩηεΛάϧʔϓͷ tasks
ϑΝΠϧʹՃ͢Δͱؔ࿈͢Δ λεΫ͕εϨου୯ҐͰάϧʔϓʹՃ͞ΕΔ ෳ֊ߏɻվߏ͝ͱʹҟͳΔπϦʔΛ࡞Ͱ͖Δɻͨ ͩ͠ɺҰͭͷαϒγεςϜ͕ॴଐͰ͖ΔπϦʔҰͭ πϦʔͷͲͷϨϕϧͷάϧʔϓʹλεΫ͕ॴଐͰ͖Δ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 29 / 53
Cgroupͷ֊ߏ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 30 / 53
CgroupͷαϒγεςϜ cpu: 2.6.24 CFS(Completely Fair Scheduler) bandwidth controlɽ୯Ґ ࣌ؒͷάϧʔϓͷλεΫ͕࣮ߦͰ͖Δ߹ܭ࣌ؒΛ੍ݶ͢Δ (3.2
Ͱ࣮) ૬ରɽάϧʔϓؒͷ CPU ࣌ؒͷׂͷׂ߹Λࢦఆ͢Δɽ ྫ͑ GroupA=100,GroupB=50 ͱ͢Δͱ A:B=2:1 cpuacct: 2.6.24 άϧʔϓͷ CPU ϦιʔεͷϨϙʔτ (CPU ࣌ؒ) cpuset: 2.6.24 ׂΓͯΔ CPU, ϝϞϦϊʔυͷׂ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 31 / 53
CgroupͷαϒγεςϜ device: 2.6.26 σόΠεͷΞΫηεڐՄɼ੍ݶͷࢦఆ freezer: 2.6.28 άϧʔϓͷϓϩηεΛશͯҰ࣌ఀࢭ͢Δ memory: 2.6.29 ϝϞϦϦιʔεͷ੍ݶ
(ϢʔβϝϞϦɼΧʔωϧϝϞϦ) blkio (Block IO): I/O weight controller(2.6.33 Ҏ߱) άϧʔϓͷ༏ઌΛࢦఆ ͢Δ I/O throttling(2.6.37 Ҏ߱) άϧʔϓͷϓϩηεͷσόΠ εʹର͢Δૢ࡞ͷ߹ܭͷࢦఆ (ࢀߟ)Linux2.6.37 ͷ৽ػೳ “I/O throttling” Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 32 / 53
CgroupͷαϒγεςϜ hugetlb: 3.6 cgroup ͔Βͷ hugetlb ͷ༻ perf event: 2.6.39
άϧʔϓ୯ҐͰ perf πʔϧͰϞχλϦϯά (ύϑΥʔϚϯε ղੳ) net cls: 2.6.29 ύέοτʹࣝผࢠΛ͚ͭɼτϥϑΟοΫίϯτϩʔϧ (tc) ͱ netfilter(3.14 Ҏ߱) ͰίϯτϩʔϧՄೳʹ Linux 3.14 Ͱ net cls cgroup ʹՃ͞Εͨ netfilter ରԠ net prio: 3.3 άϧʔϓؒͰͷωοτϫʔΫͷ༏ઌΛΠϯλʔϑΣʔεຖʹ ࢦఆ͢Δ Linux 3.3 ͷ৽ػೳ Network priority cgroup Linux 3.3 ͷ৽ػೳ Network priority cgroup (2) Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 33 / 53
CgroupͷαϒγεςϜ pids: 4.3 fork() clone() ͰىಈͰ͖ΔϓϩηεΛ੍ݶ͢Δ Linux 4.3 ͷ
Process Number Controller (1) Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 34 / 53
Cgroupͷ͍ํ Cgroup ίϯςφͱؔͳ͘༻Մೳ # mount -t tmpfs cgroup_root
/sys/fs/cgroup # mkdir /sys/fs/cgroup/memory # mount -t cgroup -o memory cgroup /sys/fs/cgroup/memory (ϝϞϦαϒγεςϜͷ Ϛϯτ) # mkdir /sys/fs/cgroup/memory/test01 ("test01" ͱ͍͏άϧʔϓͷ࡞) # echo $$ > /sys/fs/cgroup/memory/test01/tasks (ϓϩηεΛάϧʔϓʹొ) # cat /sys/fs/cgroup/memory/test01/tasks (άϧʔϓͷϓϩηεͷ֬ೝ) 2824 2837 # echo 30M > /sys/fs/cgroup/memory/test01/memory.limit_in_bytes (άϧʔϓʹରͯ͠ϝϞϦ্ݶ 30M ͱ͍͏੍ݶΛઃఆ) # cat /sys/fs/cgroup/memory/test01/memory.limit_in_bytes (੍ݶͷ֬ೝ) 31457280 # cat /sys/fs/cgroup/memory/test01/memory.usage_in_bytes (ݱࡏͷ༻ྔͷ֬ೝ) 565248 Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 35 / 53
cgroupσϞ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 36 / 53
ࠓͷ༰ ίϯςφͷ֓ཁ Linux ʹ͓͚ΔίϯςφͷΈ Namespace σϞ Cgroup σϞ ωοτϫʔΫؔ࿈ػೳ (͕࣌ؒ͋Ε)
ίϯςφͰ͑Δ໘ന͍ػೳ (͕࣌ؒ͋Ε) ·ͱΊ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 37 / 53
Linuxʹ͓͚ΔίϯςφͷΈ ωοτϫʔΫػೳ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 38 / 53
ίϯςφͰ͏ωοτϫʔΫػೳ ʙ veth OpenVZ/Virtuozzo ༝དྷͷػೳ ରͱͳΔΠϯλʔϑΣʔεΛੜ͠ɼΠϯλʔϑΣʔεؒͰ ௨৴Λߦ͏ (Layer2 ͷτϯωϧ) ରͷยํΛϗετଆͷϒϦοδʹɼยํΛίϯςφʹଓ
Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 39 / 53
ίϯςφͰ͏ωοτϫʔΫػೳ ʙ macvlan ཧΠϯλʔϑΣʔεʹผͷ MAC ΞυϨε͕͍ͨԾత ͳ৽͍͠ΠϯλʔϑΣʔεΛ࡞ɽ͜ͷΠϯλʔϑΣʔεΛ ίϯςφʹׂ Ճ౻ହจ (lxc-jp)
KOF 2015 2015-11-06 40 / 53
ࠓͷ༰ ίϯςφͷ֓ཁ Linux ʹ͓͚ΔίϯςφͷΈ Namespace σϞ Cgroup σϞ ωοτϫʔΫؔ࿈ػೳ (͕࣌ؒ͋Ε)
ίϯςφͰ͑Δ໘ന͍ػೳ (͕࣌ؒ͋Ε) ·ͱΊ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 41 / 53
LinuxΧʔωϧͷίϯςφͰ͑Δ໘ന͍ ػೳ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 42 / 53
CRIU(1) http://criu.org/ OpenVZ ϓϩδΣΫτͷ Checkpoint/Restore ࣮ ΞϓϦέʔγϣϯͷ͋Δ࣌ͷঢ়ଶΛอଘ͠ɺ࠶։Ͱ͖Δ Χʔωϧ 3.11 Ҏ߱Ͱ༻Մೳ
Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 43 / 53
CRIU(2) $ sudo criu dump -D checkpoint -t
1234 (PID:1234 ͷϓϩηεͷใΛμϯϓͯ͠ checkpoint σΟϨΫτϦʹอଘ) $ ls ./checkpoint cgroup.img fdinfo-17.img inventory.img pages-15.img core-170.img fdinfo-18.img ipcns-msg-9.img pages-16.img core-176.img fdinfo-2.img ipcns-sem-9.img pages-17.img core-1.img fdinfo-3.img ipcns-shm-9.img pages-1.img core-260.img fdinfo-4.img ipcns-var-9.img pages-2.img core-261.img fdinfo-5.img iptables-8.img pages-3.img : (snip) $ sudo criu restore -D checkpoint -d (checkpoint σΟϨΫτϦͷμϯϓΠϝʔδΛ ͬͯϦετΞ) (ॲཧͷུ֓Λॻ͍͚ͨͩͳͷͰ࣮ࡍ৭ʑΦϓγϣϯΛࢦఆͨ͠Γ͢Δඞཁ͕͋Γ·͢) Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 44 / 53
overlayfs Union Filesystem (aufs ͱҰॹ) ෳͷσΟϨΫτϦΛಁաతʹॏͶ͋ΘͤͯͻͱͭʹݟͤΒ ΕΔ ίϯςφͱؔͳ͍ 3.18 kernel
ͰϚʔδ ίϯςφͷΫϩʔϯΛ࡞͢Δͱ͖ͷϑΝΠϧγεςϜͱ͠ ͯ LXC ͔Βར༻Ͱ͖Δ Ubuntu/Plamo ͩͱඇಛݖίϯςφͷΫϩʔϯʹ͑Δ Docker Ͱར༻Ͱ͖Δ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 45 / 53
overlayfs࣮ߦྫ # mkdir lower upper overlay work #
ls -F lower/ overlay/ upper/ work/ # touch lower/lower # touch upper/upper # mount -n -t overlay \ > -o lowerdir=lower,upperdir=upper,workdir=work \ > overlay overlay # ls overlay/ lower upper # touch overlay/test # ls overlay/ lower test upper # ls upper/ test upper Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 46 / 53
overlayfsσϞ 1 lower, upper, work, overlay σΟϨΫτϦ࡞ 2 lower, upper
ʹϑΝΠϧ࡞ 3 overlayfs Ϛϯτ 4 Ϛϯτͨ͠σΟϨΫτϦ (overlay) ʹ lower, upper ʹଘࡏ ͢ΔϑΝΠϧ͕྆ํݟ͍͑ͯΔͷΛ֬ೝ 5 Ϛϯτͨ͠σΟϨΫτϦ (overlay) ͰϑΝΠϧ࡞ 6 ࡞ͨ͠ϑΝΠϧ͕ upper ʹͰ͖͍ͯΔ͜ͱΛ֬ೝ 7 ΞϯϚϯτͨ͋͠ͱͷ֤σΟϨΫτϦΛ֬ೝ https://asciinema.org/a/24151 Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 47 / 53
·ͱΊ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 48 / 53
·ͱΊ ίϯςφͷ֓ཁ Linux ʹ͓͚ΔίϯςφͷΈ ίϯςφΧʔωϧʹ࣮͞Ε͍ͯΔ৭ʑͳػೳͷΈ߹Θͤ Ͱ࣮ݱ͞Ε͍ͯΔ Namespace OS Ϧιʔεͷִ Cgroup
ϗετͷཧϦιʔεͷ੍ݶ ωοτϫʔΫؔ࿈ػೳ veth macvlan ίϯςφͰ͑Δ໘ന͍ػೳ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 49 / 53
lxc-jp LXC ʹݶΒͣίϯςφͷΛѻ͍ͬͯ·͢ɻ https://groups.google.com/d/forum/lxc-jp Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 50
/ 53
ίϯςφܕԾԽͷใަձ https://sites.google.com/site/containerstudy/ http://ct-study.connpass.com/ ίϯςφٕज़ʹؔ࿈͢ΔΛѻ͏ ίϯςφʹؔ࿈͢ΔΧʔωϧͷ࣮ʹ͍ͭͯ ֤छπʔϧΩοτͷհɼ࣮ʹ͍ͭͯ ίϯςφٕज़ΛͬͨπʔϧιϑτΣΞͷհ࣮ʹͭ ͍ͯ ίϯςφٕज़ͷ׆༻ɾӡ༻ࣄྫ ͦͷଞʮίϯςφʯͱ͍͏Ωʔϫʔυ͕গ͠Ͱೖ͍ͬͯΔٕ
ज़ʹ͍ͭͯ ͜Ε·Ͱେࡕͱ౦ژͰަޓʹ 8 ճ࣮ࢪɻ࣍ճԬͷ༧ఆɻ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 51 / 53
ڠྗऀืू ҎԼͷ༁Λߦ͍ͬͯ·͢ɻ͕࣌ؒ͋Δͱ͖͚ͩͰྑ͍ͷ ͰϨϏϡʔɺमਖ਼ɺվྑΛͯͩ͘͠͞Δํܴ͠·͢ɻ LXC ϚχϡΞϧ (man pages) linuxcontainers.org ίϯςϯπ Ճ౻ହจ
(lxc-jp) KOF 2015 2015-11-06 52 / 53
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ Ճ౻ହจ (lxc-jp) KOF 2015 2015-11-06 53 / 53