Haconiwa の中身と設計思想 /the-haconiwa-internals
by
KONDO Uchio
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
NSVCZͰ࡞Δ-JOVYίϯςφͷະདྷ )BDPOJXBͷதͱઃܭࢥ ۙ౻Ӊஐ࿕(.01FQBCP *OD ϗεςΟϯάٕज़ΧϯϑΝϨϯεˏେࡕ
Slide 2
Slide 2 text
ΤϯδχΞ ۙ౻Ӊஐ࿕!VE[VSB ٕज़ج൫νʔϜϓϦϯγύϧ IUUQVE[VSBIBUFOBCMPHKQ
Slide 3
Slide 3 text
!VE[VSB wԬࢯɻ౦ࡾՏग़ɺେֶˠब৬ͱ΄Ͳ౦ژͰա͢͝ wࣾ4&ˠ&$αʔϏε։ൃӡ༻ˠιʔγϟϧήʔϜˠϖύϘ wΞϓϦέʔγϣϯʢ3P3ओ৯ʣˠ%FW0QT ˠγεςϜϓϩάϥϛϯάʁ wʰύʔϑΣΫτ3VCZPO3BJMTʱͳͲΛॻ͍ͨʢ͕ɺͦΖͦΖ
Slide 4
Slide 4 text
)BDPOJXBͱ
Slide 5
Slide 5 text
)BDPOJXBͱ w-JOVYίϯςφΤϯδϯͷҰͭ w࠷͍͕ۙ͋Δʮ%PDLFSʯɺίϯςφΤϯδϯ wଞʹɺ-9$ɺSLUɺ0QFO7;ɺTZTUFNEOTQBXOɺͳͲ wૉૣ͘ɺখ͘͞ɺಠཱͨ͠ʮ04ͷΑ͏ͳʯڥΛͭ͘ΕΔ w7JSUVBM#PY,7.ͷΑ͏ͳԾԽͱҧ͍ɺ$16ͷΤϛϡϨʔτ 04ΧʔωϧࣗମΛؚ·ͳ͍ʢͷͰɺҰൠʹܰྔɺߴʣ
Slide 6
Slide 6 text
ಛ
Slide 7
Slide 7 text
ओͳಛ w-JOVYίϯςφΛߏ͢Δ༷ʑͳཁૉɾػೳʹ͍ͭͯɺ ཉ͍͠ͷࣗ༝ʹΈ߹ΘͤΔ͜ͱ͕Ͱ͖ΔίϯςφΤϯδϯ wͲΜͳ͜ͱ͕Ͱ͖Δ͔ޙड़ wͦͷΈ߹ΘͤͷͨΊͷ෦%4-Λɺ3VCZ NSVCZ Ͱهड़Մೳ
Slide 8
Slide 8 text
)BDPOJXBNSVCZϓϩμΫτ w͓͔͛͞·Ͱ3VCZ,BJHJͰ͓Λ͓ͯ͠Γ·͢ wIUUQSVCZLBJHJPSHQSFTFOUBUJPOTVE[VSBIUNM
Slide 9
Slide 9 text
ৄࡉ౦ژͷεϥΠυੋඇɻ wIUUQTTQFBLFSEFDLDPNVE[VSBIBDPOJXBPOUIFQBWFNFOU
Slide 10
Slide 10 text
؆୯ͳEFNP ൿͷखॱIUUQTHJTUHJUIVCDPNVE[VSBCFECEECDEDFCBBG
Slide 11
Slide 11 text
ࠓ )BDPOJXBͷதͷ
Slide 12
Slide 12 text
)BDPOJXBΛࢧ͑Δ -JOVYίϯςφٕज़
Slide 13
Slide 13 text
ϗετ04͔ΒڥΛʮִʯ͢Δ wDISPPUSPPUϑΝΠϧγεςϜͷมߋ w-JOVYOBNFTQBDF04ͷ༷ʑͳϦιʔεར༻ͷʮ໊લۭؒʯΛมߋ ϗετ໊ɺ*1$ͷϦιʔεɺϚϯτϙΠϯτɺ1*%ɺ
Slide 14
Slide 14 text
ϗετ04ͷϦιʔεར༻Λʮ੍ݶʯ͢Δ wSMJNJUΧʔωϧʹΑΔϓϩηεͷ༷ʑͳϦιʔεར༻ͷ੍ݶ wDHSPVQϓϩηεάϧʔϓ୯ҐͰͷ$16ɺϝϞϦɺ*0ͳͲͷ੍ݶ wLFSOFMDBQBCJMJUZSPPUͷݖݶͷׂͱ੍ޚ
Slide 15
Slide 15 text
ಛʹηΩϡϦςΟʹؔΘΔػೳ wLFSOFMDBQBCJMJUZ wTFDDPNQγεςϜίʔϧຖͷݺͼग़͠ͷϑΟϧλϦϯά w"QQ"SNPS 4&-JOVY."$ ڧ੍ΞΫηε੍ޚ ͷಋೖ
Slide 16
Slide 16 text
-JOVYίϯςφ جຊతʹɺ ͜ΕΒΛΈ߹Θ͍ͤͯΔ
Slide 17
Slide 17 text
)BDPOJXB❤NSVCZ
Slide 18
Slide 18 text
ॳظͷ)BDPOJXB w$3VCZͰɺHFNͱͯ͠։ൃ͍ͯͨ͠ w$3VCZϚϧνεϨουͰىಈ͢Δͱ͍͏ wز͔ͭͷOBNFTQBDFؔ࿈ͷγεςϜίʔϧ͕ݺͳ͍ w$3VCZͷஈ֊ͰɺͦΕΒͷॲཧΛ֎෦ίϚϯυ γΣϧεΫϦϓτͰϥοϓͯ͠ରԠ͍ͯͨ͠ wϓϩηεϨΠΞτ͕͔ͳΓෳࡶʹͳΔ
Slide 19
Slide 19 text
NSVCZͰॻ͖͢
Slide 20
Slide 20 text
ͳͥɺNSVCZ͔ͩͬͨ wΧʔωϧʹ͍ۙͱ͜ΖͷϓϩάϥϛϯάΛɺ$ݴޠͰࣗͷͷ ʹͰ͖Δ wίϯςφܥϥΠϒϥϦɺγεςϜίʔϧΛݺͿ͜ͱ͕Մೳ w͔͠ɺͦΕΒίΞΛNSVCZͷ"1*Ͱϥοϓͯ͠͠·͑ɺ γεςϜͷૢ࡞Λ3VCZͰॊೈʹهड़Ͱ͖Δ
Slide 21
Slide 21 text
ֶशίετͲ͏͔ w͍ͱ͍͏͔ɺຊޠͰNSVCZΛ৮ͬͯΈͨͱ͍͏υΩϡϝϯτ ൺֱత๛ʹଘࡏ͢Δ w$ͷ"1*ࣗମૉͰɺ͍͔ͭ͘ϙΠϯτΛ֮͑ΕόϦόϦॻ͚Δ wNBUTVNPUPSZ͞Μͱ͍͏ਓ͕ྡͷ੮ʹଘࡏ͢Δ
Slide 22
Slide 22 text
)BDPOJXBͷ։ൃํ w$ݴޠʴNSVCZͰίϯςφͷγεςϜίʔϧΛϥοϓ͢ΔNHFNΛ ར༻͢Δ࡞ΔɻNHFNͰখ͞ͳ͜ͱΛ͢Δ wGPSLFYFDXBJULJMM wNPVOUDISPPU wMJCDHSPVQ NSVCZDHSPVQ wMJCDBQ NSVCZDBQBCJMJUZ wVOTIBSFTFUOT DMPOF wͦΕΒΛɺ)BDPOJXBDPSFͰ3VCZͷίʔυͷΈͰΈ߹ΘͤΔ
Slide 23
Slide 23 text
5JQTNSVCZ3VCZΒ͘͠ॻ͘ wྫ͑μοΫλΠϐϯάʴετϥςδύλʔϯͰઃܭΛ͖ͬ͢Γͱ͔
Slide 24
Slide 24 text
5JQTNSVCZDMJ ͷར༻ wੜ͞ΕͨςϯϓϨʔτʹԊ͑ɺ΄ͱΜͲ3VCZͷίʔυ͚ͩͰ ϫϯόΠφϦͷπʔϧ͕࡞Մೳ wΦϓγϣϯύʔαͳ͍ˠNSVCZBSHUBCMFΛࣗ࡞ wUPPMTIBDPOJXBIBDPOJXBDʹNBJO BSHD BSHW ͕͋Δ wτοϓϨϕϧͷ,FSOFM@@NBJO@@ΛݺͿ͚ͩɺγϯϓϧ IUUQTHJUIVCDPNIPOFNSVCZDMJ
Slide 25
Slide 25 text
)BDPOJXBͷల
Slide 26
Slide 26 text
ঝલ)BDPOJXBͷதͷத w-JOVYίϯςφΛ࡞ΔͨΊʹɺ༷ʑͳγεςϜίʔϧ͕ଘࡏ͢Δ wͦΕΒͷγεςϜίʔϧɺҰͭҰͭɺͱͯখ͞ͳࣄΛ͢Δ wͦͷখ͞ͳࣄΛɺରԠ͢ΔNSVCZͷHFNͰҰ௨Γϥοϓ͢Δ ͜ͱ͕͍ྃͯ͠Δɻ
Slide 27
Slide 27 text
͜ΕΒͷNHFNʹ͍ͭͯ wNHFNࣗମɺ୯ମͰར༻ग़དྷΔ wҰͭҰͭඇৗʹখ͞ͳ$ͷίʔυͰɺখ͞ͳࣄΛ͍ͯ͠Δ wDG-JOVYͷίϚϯυ w͜ΕΒNHFNΛΈ߹Θͤͯɺ3VCZʹΑΔ%4-Ͱϥοϓ͢Δͱɺ )BDPOJXBͷίϯςφ࣮ʹͳΔ NSVCZTFDDPNQͷ୯ମར༻ʹ͍ͭͯ IUUQVE[VSBIBUFOBCMPHKQFOUSZ
Slide 28
Slide 28 text
ࢀߟ-JOVYίϚϯυγεςϜίʔϧ ίϚϯυ γεςϜίʔϧ NSVCZ chroot(1) chroot(2) Dir.chroot mount(8) mount(2) Mount.new.mount unshare(1) unshare(2) Namespace.unshare nsenter(1) setns(2) Namespace.setns capsh(1) cap_*(3) Capability.* (cgroupfs ͷૢ࡞) cgroup_*(3) Cgroup::*.new ...
Slide 29
Slide 29 text
DG4FSWFSTQFDTQFDJOGSB w4FSWFSTQFDɺ34QFDϕʔεͷΠϯϑϥςετπʔϧͰ͋Δɻ wҰํͰɺʮαʔόʹର͢Δใऔಘૢ࡞ʯΛநԽͨ͠ϨΠϠʔͰ͋Δ TQFDJOGSB͕ଘࡏ͠ɺ4FSWFSTQFDͦͷ্Ͱಈ࡞͢Δ wͭ·ΓɺʮTQFDJOGSBͱݴ͏நԽϨΠϠͷ্Ͱಈ͘Ұ࣮͕4FSWFSTQFDʯ Ͱ͋Δͱݴ͑Δ wଞʹJUBNBF ͷΑ͏ͳ࣮ʢߏཧπʔϧʣ͕ग़ΔͳͲɺ ΑΓ൚༻తʹ׆༻͞Ε͍ͯΔ ʮTFSWFSTQFDએݴతهड़Ͱαʔόͷঢ়ଶΛςετՄೳͳ൚༻ੑͷߴ͍ςετϑϨʔϜϫʔΫʯٶԼদຊɺ IUUQTHJUIVCDPNNJ[[ZTFSWFSTQFDUIFTJTQVMMJTTVFDPNNFOUIUUQTFSWFSTQFDPSH IUUQJUBNBFLJUDIFO
Slide 30
Slide 30 text
4FSWFSTQFDTQFDJOGSB ͷΑ͏ͳநԽϨΠϠΛ )BDPOJXBʹఆٛՄೳͳͣ
Slide 31
Slide 31 text
ఆٛͰ͖Δͱ Կ͕خ͍͔͠ʁ
Slide 32
Slide 32 text
ॊೈͳίϯςφ࠶ߟ w)BDPOJXBͰ࣮ݱͰ͖Δॊೈ͞ͷྫ ɿ wϓϩάϥϜʹΑΔϦιʔεͷׂΓͯͷ੍ޚʢFHDHSPVQʣ wఀࢭϑοΫɺγάφϧड৴࣌ͷϑοΫͷఆٛ wΠϝʔδ࡞खॱͷNSVCZʹΑΔࣗ༝ͷߴ͍هड़ wෆཁͳίϯςφػೳΛແޮԽͰ͖Δ͜ͱͰͷߴूੵԽ ʮ)BDPOJXBͷ͜Ε·Ͱͱ͜Ε͔Βʯۙ౻ɺ
Slide 33
Slide 33 text
ෳࡶԽɾଟ༷Խ͢Δ ӡ༻ཁ݅Λ %4-ʹΑΔ੍ޚͰରॲ͢Δ
Slide 34
Slide 34 text
ίϯςφεϨουతʹ "1*Λ௨ͯࣗ͠ࡏʹ ίϯτϩʔϧͰ͖Δ
Slide 35
Slide 35 text
'BTU$POUBJOFS%"04 w%"04 %JNFOTJPOGSFF"VUPOPNPVT0QFSBUJOH4ZTUFN ͷఏҊ͕͋Δ wίϯςφΛҰͭͷੜଘظؒͷ۠ΒΕͨεϨουͱଊ͑͢ %"04ͷ༻ޠͰ͍͏ͱ.PSUBMͰ͋Δͱଊ͑Δ wͦͷ߹ɺ͠)BDPOJXB JOUFSOBM"1* Ͱ࣮ݱ͍ͯ͠Δ நԽϨΠϠ͕ଘࡏ͢ΔͳΒɺ ͦΕγεςϜίʔϧʹ૬͢Δͱݴ͑ΔͰ͋Ζ͏ ʮ'BTU$POUBJOFSΞʔΩςΫνϟ֓ʯদຊɺ
Slide 36
Slide 36 text
ίϯςφ )BDPOJXB ϗετ
Slide 37
Slide 37 text
%"04)BDPOJXBJOUFSOBM"1* Λϕʔεͱͨ͠ ৽͍͠ελοΫͷఏҊ
Slide 38
Slide 38 text
%"04ʹ͍ͭͯɺ !NBUTVNPUPSZͷൃදͰʂ
Slide 39
Slide 39 text
·ͱΊͱࠓޙ
Slide 40
Slide 40 text
)BDPOJXBͰͰ͖Δ͜ͱ w͜͜·Ͱʹݟ͖ͯͨΑ͏ͳ-JOVYͷίϯςφ࡞ͷͨΊͷػೳΛɺ ॊೈʹΈ߹Θͤɺಈతʹ੍ޚͰ͖ΔΑ͏ʹͳͬͨɻ wྫ͑ϗετͷϦιʔεΛϓϩάϥϚϒϧʹࡉ੍͔͘ޚ͢Δ wྫ͑ΠϝʔδSPPUGTͷߏΛॊೈʹมߋ͢Δ wίϯςφΛߴʹىಈͨ͠Γɺಈతʹআͨ͠Γ͢Δ
Slide 41
Slide 41 text
)BDPOJX-JOVYTZTDBMMNSVCZHFN wίϯςφΤϯδϯͱͯ͠ͷ)BDPOJXBɺͨ͘͞ΜͷNSVCZHFNΛ Έ߹ΘͤͨநԽϨΠϠͷ্Ͱಈ࡞͍ͯ͠ΔͱΈͳͤΔ wͦΕͧΕͷNSVCZHFNɺ-JOVYͷγεςϜίʔϧΛݺͼग़͢ wΤϯδϯͱ-JOVY,FSOFMͱͷؒͷΠϯλϑΣʔεతͳJOUFSOBM"1*Λ ఆՄೳͰɺͦΕ4FSWFSTQFDTQFDJOGSBͷରԠʹࣅ͍ͯΔ
Slide 42
Slide 42 text
)BDPOJXBͱ'BTU$POUBJOFS%"04 w'BTU$POUBJOFSߏʹΑΓɺ%"04ɺ.PSUBM͕ఏҊ͞Εͨ wͦΕΒͱ)BDPOJXB)BDPOJXBJOUFSOBMͷؔɺ ͪΐ͏Ͳ04εϨουγεςϜίʔϧͷΑ͏ͳؔʹͳΔ w͜ΕΒٕज़ʹΑΔ৽͍͠ελοΫΛզʑఏҊ͍ͨ͠
Slide 43
Slide 43 text
ࠓޙ)BDPOJXBͰ࣮ݱ͍ͨ͜͠ͱ w'BTU$POUBJOFS ߏʹରԠ͢Δػೳͷ֦ॆ w$3*6ͱͷ࿈ܞڧԽ wϑοΫॲཧͷ֦ॆɺ%4-ͷػೳՃ wωοτϫʔΫΛ௨ͨ͠%4-ͷ࣮ߦ wΑΓଟ͘ͷίϯςφػೳͷରԠ w)BDPOJXBͷதؒʢγεςϜίʔϧ૬ʣͷൈ͖ग़͠ͱநԽ IUUQICNBUTVNPUPSKQFOUSZ IUUQTDSJVPSH.BJO@1BHF
Slide 44
Slide 44 text
͜ΕΒͷٕज़Λ༻͍ͨɺ ࠓ·Ͱʹͳ͍Α͏ͳ ϗεςΟϯάͷαʔϏεΛ Γ͍ͨɻ
Slide 45
Slide 45 text
ؒ ืू
Slide 46
Slide 46 text
৽͍ٕ͠ज़Ͱɺ৽͍͠αʔϏεΛɻ ϖύϘͳΒͰ͖Δ ࠷৽ͷ࠾༻ใΛνΣοΫˠ !QC@SFDSVJU
Slide 47
Slide 47 text
ར༻ը૾ʹ͍ͭͯ wεϥΠυͷഎܠը૾IUUQTIPXDBTFDJUZGVLVPLBMHKQ w ʮར༻্ͷҙʯʹԊͬͯར༻͍ͯ͠·͢ɻը૾ͷஶ࡞ݖԬࢢʹؼଐ͠·͢ɻ