Slide 1

Slide 1 text

ίϯςφΛงғؾͰಈ͔͞ͳ͍࿩ 1)1ΧϯϑΝϨϯε෱Ԭલ໷ࡇϦδΣΫτίϯ *OOPWBUPS+BQBO*OD ෋ॴ྄ &OHJOFFS

Slide 2

Slide 2 text

ͬͦ͘͞Ͱ͕͢

Slide 3

Slide 3 text

ίϯςφΛงғؾͰ࢖ͬͯ·ͤΜ͔ʁ

Slide 4

Slide 4 text

DockerΛ࢖ͬͨ։ൃ ίϯςφͷৄࡉ͸஌Βͳͯ͘΋ग़དྷΔ

Slide 5

Slide 5 text

؀ڥߏங docker-compose.yml

Slide 6

Slide 6 text

docker-compose up -d ։ൃ؀ڥߏங͕Ұॠ…

Slide 7

Slide 7 text

docker-compose down ࠔͬͨΒ্ཱͪ͛௚͠ docker-compose up -d

Slide 8

Slide 8 text

͜ͷ··Ͱ͸ΞϗʹͳΔʂ ຊΛಡΜͰίϯςφʹೖ໳ͩ

Slide 9

Slide 9 text

ίϯςφԾ૝Խ͸ɺαʔόʔԾ૝ԽͰ͸ͳ͍ɻ Α͋͘Δίϯςφೖ໳ॻͷಋೖ෦෼

Slide 10

Slide 10 text

ผʹαʔόʔԾ૝Խͷ͜ͱʹৄ͘͠ͳΓ͍ͨΘ ͚Ͱ͸ͳ͍ͷ͕ͩ…

Slide 11

Slide 11 text

ίϯςφͱ͸Χʔωϧͷఏڙ͢ΔػೳʹΑͬͯ ࣮ߦ؀ڥ͕෼཭͞ΕͨͦΕͧΕͷϢʔβۭؒͷ ͜ͱͰ͋Δɻ -> ͜͏͍͏આ໌͚ͩͩͱϐϯͱ͜ͳ͍ Α͋͘Δίϯςφೖ໳ॻͷಋೖ෦෼

Slide 12

Slide 12 text

݁ہɺίϯςφ͕Α͘෼͔Βͳ͍

Slide 13

Slide 13 text

ਅ໘໨ͳ࿩ શһ͕ৄࡉΛ͠Βͳͯ͘΋ଟ෼͍͍ ந৅తʹѻ͑ΔͳΒͦΕ΋͍͍

Slide 14

Slide 14 text

Ͱ΋ɺࢲ͸஌Γ͍ͨ Ͳ͏ͳ͍ͬͯΔͷ͔ཧղ͍ͨ͠

Slide 15

Slide 15 text

ͦ͜Ͱࣗ෼ͳΓʹௐ΂ͨ

Slide 16

Slide 16 text

chroot 1979೥ ~ unshare 2.14~ nsenter 2.6.24~ cgroups 2.6.24~ Զௐ΂ʹΑΔίϯςφͷਖ਼ମ ※LinuxͷίϚϯυͰ͢ɻ

Slide 17

Slide 17 text

Ҏ্Ͱ͢… ͱ͍͏ͷ͸ڐ͞Εͳ͍ͱࢥ͏ͷͰɻ ྫΛަ͑ͯɺͳΔ΂͘ฏқʹઆ໌͠·͢ɻ

Slide 18

Slide 18 text

ྫ͑͹ɺ `alpine linux` ίϯςφ tarͷத਎ʢൈਮ)

Slide 19

Slide 19 text

ͯ͞ɺ͜Ε͕Ͳ͏΍ͬͯಈ͘ͷ͔ʁ

Slide 20

Slide 20 text

chroot ͍͖ͳΓίϯςφ׬੒

Slide 21

Slide 21 text

ͨͩ͠ɺ͜Ε͚ͩͩͱ෼཭͕ෆे෼ ↑ϗετͷϓϩηεΛpkillͰ͖ͪΌ͏

Slide 22

Slide 22 text

unshare namespaceΛ࡞੒ͯ͠ɺϓϩηεΛ෼཭

Slide 23

Slide 23 text

cgroups /sys/fs/cgroup഑ԼͰઃఆΛݟΕΔ ϓϩηεάϧʔϓͷϦιʔεར༻Λִ཭ɾ੍ݶ

Slide 24

Slide 24 text

unshare͞ΕͨϓϩηεʹೖΕΔ `name space enter` `docker exec` ͱ͔ʹ࢖ΘΕ͍ͯΔͱࢥ͏ nsenter

Slide 25

Slide 25 text

ίϯςφΛ࣮ݱ͢Δ4ίϚϯυ جຊ͸ chroot ϓϩηεΛ unshare Ͱ෼཭ ϦιʔεΛ cgroup Ͱ෼཭ nsenter Ͱ෼཭ͨ͠ϓϩηεʹ৵ೖ

Slide 26

Slide 26 text

جຊ͸ chroot Linux͔ΒɺLinuxͰ࣮ߦՄೳͳϑΝΠϧΛ࣮ߦ

Slide 27

Slide 27 text

྆ํLinux͔ͩΒ࣮ߦͰ͖Δ LinuxΧʔωϧͷABI Application Binary Interface ݫ֨ͳޙํޓ׵ੑ

Slide 28

Slide 28 text

Ұݟ alpinelinux ͕Ծ૝OSͷΑ͏ʹݟ͑Δ ࣮ଶ͸ϓϩηε࣮ߦ

Slide 29

Slide 29 text

ɹchroot΋docker΋ ࣮ߦ࣌ʹɺඞͣίϚϯυΛࢦఆ docker run -it alpine:latest sh ͦ͏͍͏͜ͱͩͬͨͷ͔…

Slide 30

Slide 30 text

ίϯςφग़ͨͯͷ͜Ζ ୡਓ͕͓ͨͪͬ͠Όͬͯ·ͨ͠ɻ ʮίϯςφͬͯ chrootͩΑͶʯͱ Α͏΍͘…ҙຯΛཧղͰ͖·ͨ͠

Slide 31

Slide 31 text

͔͠͠ɺผͷٙ໰͕༙͍ͯ͘Δ

Slide 32

Slide 32 text

Docker For Mac ͸ʁ Docker For Windows ͸ ? Mac΋ɺWindows΋Linux͡Όͳ͍ ͳΜͰ Dockerಈ͘ͷʁ

Slide 33

Slide 33 text

Docker for Mac Windowsͷ৔߹΋ಉ༷ LinuxKitͱ͍͏ίϯςφ༻Linux্Ͱಈ࡞

Slide 34

Slide 34 text

ྫ͑͹ MacͷClangͰ HelloWorldͷ࣮ߦϑΝΠϧΛ࡞੒ Linuxίϯςφ্Ͱ࣮ߦ -> ಈ͔ͳ͍ɻ Linux͡Όͳ͍͔Βɻ

Slide 35

Slide 35 text

UbuntuͰ HelloWorldͷ࣮ߦϑΝΠϧΛ࡞੒ DockerͰ࣮ߦ -> ಈ͘

Slide 36

Slide 36 text

Linux -> Linuxͷ࣮ߦՄೳϑΝΠϧ -> ಈ͘ Linux -> OSXͷ࣮ߦՄೳϑΝΠϧ -> ಈ͔ͳ͍ ཧ۶͸୯७

Slide 37

Slide 37 text

LXCͱ͔LibContainerͱ͔runCͱ͔ Containerdͱ͔৭ʑมΘ͍ͬͯͬͯΔ͕ جຊ͸มΘΒͳ͍ɻ

Slide 38

Slide 38 text

͜͜·ͰΛཧղ͢Ε͹ DockerͰಈ࡞͢Δ Windowsίϯςφ͕ແ͍ཧ༝ OSXίϯςφ͕ແ͍ཧ༝ ׬શʹ෼͔Γ·͢ΑͶʁ

Slide 39

Slide 39 text

ίϯςφ͸ Linux ͔Β Linuxͷ࣮ߦՄೳϑΝΠϧΛಈ͔ٕ͢ज़͔ͩΒ

Slide 40

Slide 40 text

͕࣌ؒ༨ͬͯͨΒDEMO

Slide 41

Slide 41 text

Ҏ্ɺ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ