コンテナを雰囲気で動かさない話

 コンテナを雰囲気で動かさない話

PHPカンファレンス福岡2018前夜祭リジェクトコン

F04982ad61107b5408ad139966596316?s=128

Ryo Tomidokoro

June 15, 2018
Tweet

Transcript

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

  2. ͬͦ͘͞Ͱ͕͢

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

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

  5. ؀ڥߏங docker-compose.yml

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

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

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

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

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

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

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

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

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

  15. ͦ͜Ͱࣗ෼ͳΓʹௐ΂ͨ

  16. chroot 1979೥ ~ unshare 2.14~ nsenter 2.6.24~ cgroups 2.6.24~ Զௐ΂ʹΑΔίϯςφͷਖ਼ମ

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

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

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

  20. chroot ͍͖ͳΓίϯςφ׬੒

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

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

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

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

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

    Ͱ෼཭ͨ͠ϓϩηεʹ৵ೖ
  26. جຊ͸ chroot Linux͔ΒɺLinuxͰ࣮ߦՄೳͳϑΝΠϧΛ࣮ߦ

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

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

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

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

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

  32. Docker For Mac ͸ʁ Docker For Windows ͸ ? Mac΋ɺWindows΋Linux͡Όͳ͍

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

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

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

  36. Linux -> Linuxͷ࣮ߦՄೳϑΝΠϧ -> ಈ͘ Linux -> OSXͷ࣮ߦՄೳϑΝΠϧ -> ಈ͔ͳ͍

    ཧ۶͸୯७
  37. LXCͱ͔LibContainerͱ͔runCͱ͔ Containerdͱ͔৭ʑมΘ͍ͬͯͬͯΔ͕ جຊ͸มΘΒͳ͍ɻ

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

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

  40. ͕࣌ؒ༨ͬͯͨΒDEMO

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