Web開発における開発環境構築の歴史と変遷〜原始時代から現代(Docker)まで〜

Affee225683fef978457e27fbe3ecb67?s=47 endam
February 10, 2020

 Web開発における開発環境構築の歴史と変遷〜原始時代から現代(Docker)まで〜

今ではDockerはWeb開発における開発環境構築のデファクトスタンダードになっています。
なぜデファクトスタンダードになっているか、それを知る為には過去の技術がどうであったか、何のメリット・デメリットがあったかを知る必要があります。
てなわけで時代を振り返ってみましょう

※Dockerハンズオン資料のリンクも途中に含めています

Affee225683fef978457e27fbe3ecb67?s=128

endam

February 10, 2020
Tweet

Transcript

  1. Web։ൃʹ͓͚Δ ։ൃ؀ڥߏஙͷྺ࢙ͱมભ ʙݪ࢝࣌୅͔Βݱ୅(Docker)·Ͱʙ

  2. ͸͡Ίʹ ࠓͰ͸Docker͸Web։ൃʹ͓͚Δ։ൃ؀ڥߏங ͷσϑΝΫτελϯμʔυʹͳ͍ͬͯ·͢ɻ
 ͳͥσϑΝΫτελϯμʔυʹͳ͍ͬͯΔ͔ɺ ͦΕΛ஌Δҝʹ͸աڈͷٕज़͕Ͳ͏Ͱ͋ͬͨ ͔ɺԿͷϝϦοτɾσϝϦοτ͕͔͋ͬͨΛ஌ Δඞཁ͕͋Γ·͢ɻ
 ͯͳΘ͚ͰɾɾϨοπλΠϜεϦοϓʂʂʂ

  3. ݪ࢝࣌୅ ͦΕ͸Կ΋ͳ͔ͬͨ࣌୅

  4. ݪ࢝࣌୅ 9".11͢Βແ͔ͬͨ࣌୅ɻ͜ͷࠒͷ։ൃํ๏͸ओʹೋͭʂ • ͭ΂͜΂ݴΘͣʹϩʔΧϧPCʹͦΕͧΕݴޠͱϛ υϧ΢ΣΞΛΠϯετʔϧ͠Ζʂ࿩͸ͦΕ͔Β ͩʂ • ։ൃ༻ͷαʔόʔΛ༻ҙͯ͠؀ڥߏங͠Ζʂ
 SSHϩάΠϯͯ͠օͰָ͘͠ڞಉฤूͩʂ
 ώϟοϋʔʂʂʂ

  5. ݪ࢝࣌୅ ڞಉฤूͷѹ౗తਏΈPS[ • ϑΝΠϧฤू࣌ʹ୭͔͕طʹઌʹฤू͍ͯͯ͠ฤू Ͱ͖ͳ͍(ͦͷϑΝΠϧࠓ๻ฤूͯ͠·͢ʂ✋) • svn conflict͕සൃ(͜ͷࠒ͸gitͰ͢Βͳ͍) • σʔλϚΠάϨʔγϣϯ͢Β༰қʹͰ͖ͳ͍

    • Τϥʔ͕ىͬͨ࣌͜ͷ൜ਓ୳͠(୭͔Կ͔ฤू͠·͠ ͔ͨʔʔʂʁ)
  6. ݪ࢝࣌୅ σϝϦοτ • ͱʹ͔ࣗ͘෼͚͕ͩؾܰʹ৮Εͯ؆୯ʹߏஙͰ͖ ΔϩʔΧϧ؀ڥ͕ཉ͍͠ɾɾ • ͍͍ͪͪݸผͰݴޠ΍ϛυϧ΢ΣΞΛΠϯετʔ ϧͨ͘͠ͳ͍(ෑډ͕ߴ͍)

  7. தੈ ͦΕ͸XAMPPͷ࣌୅

  8. தੈɿXAMPPͷ࣌୅ • X - WindowsɺLinuxɺMacͷΫϩεϓϥοτϑΥʔϜ • A - ApacheͷA •

    M - MariaDBʢچόʔδϣϯ͸MySQLʣͷM • P - PHPͷP • P - PerlͷP 9".11ͱ͸ ΢ΣϒΞϓϦέʔγϣϯͷ࣮ߦʹඞཁͳ ιϑτ΢ΣΞΛύοέʔδͱͯ͠·ͱΊͨ΋ͷ +BWB΍1ZUIPOͷ։ൃͰ΋ 9".11͕ར༻͞ΕΔΑ
  9. தੈɿXAMPPͷ࣌୅ .".1΋ग़͖ͯͨ MAMP͸ʮMacintoshʯʴʮApacheʯʴʮMySQLʯʴ ʮPHPʯͷ֤಄จࣈΛऔུͬͨশɻ جຊతʹಉ͡ࢥ૝͕ͩɺΑΓ൚༻తʹϩʔΧϧαʔό ؀ڥҰࣜΛΠϯετʔϧग़དྷΔɻ ΍΍͍͜͠ͷ͕Mac͚ͩͰͳ͘WindowsͰ΋ಈ͘ɻ

  10. தੈɿXAMPPͷ࣌୅ 9".11ͱ.".1ͷҧ͍Λ·ͱΊΔͱ 9".11 .".1 ܗଶ 044 ແঈ൛ͱ༗ঈ൛ .".1130  ͕͋Δ

    Πϯετʔϧ ग़དྷΔίϯϙ ʔωϯτ "QBDIF .BSJB%# 1)1 1FSM "QBDIF .Z42- .BSJB%#Ͱ͸ͳ͍  1)1 1FSM /HJOY ಈ࡞؀ڥ 8JOEPXT.BD-JOVY 8JOEPXT.BD
  11. XAMPP΍MAMPʹΑͬͯ ੈք͸ٹΘΕͨɾɾʂ ͔ͷΑ͏ʹݟ͕͑ͨ ͦΕ͸ؒҧ͍ͩͬͨʂʂ

  12. தੈɿXAMPPͷ࣌୅ • ݴޠ΍ϛυϧ΢ΣΞͷઃఆΛΧελϚΠζ͢Δ৔ ߹ɺ݁ہݸผͰઃఆ͠ͳ͚Ε͹ͳΒͳ͍ɻ࣮ࡍͷ ۀ຿Ϩϕϧͷ։ൃͰ͸ଟ͘ͷෆ౎߹͕ੜ͡Δɻ 9".11΍.".1ͷσϝϦοτ /HJOY΍"QBDIFͷઃఆ .Z42-ઃఆ ௥Ճͷϛυϧ΢ΣΞ /P42-

    ΍42-JUF౳ 1)1ઃఆɾ֦ு 9".11ΛΠϯετʔϧͨ͠ޙ ͜Μͳʹઃఆ͢Δͷʁצหͯ͠Αɾɾ όʔδϣϯ΋߹Θͤͳ͖Ό͍͚ͳ͍
  13. தੈɿXAMPPͷ࣌୅ • ϩʔΧϧ؀ڥͱςετ/ຊ൪؀ڥͷؒͰࠩҟ͕ੜ͡ ͯ༧ظͤ͵Τϥʔ͕ग़Δ
 ϩʔΧϧ؀ڥ΋ςετ/ຊ൪؀ڥͱOSϨϕϧ͔Β ಉ͡ʹ͍͚ͨ͠ͲXAMPPͰ͸ग़དྷͳ͍ɻ 9".11΍.".1ͷσϝϦοτ 'TTQT ͋ΕʁϩʔΧϧͰ͸ಈ͚͘Ͳɺςετ؀ڥͰಈ͔ͳ͍ɾɾ ͋ɺLinux͔ͩΒ͜ͷύοέʔδ͕ඞཁͩͬͨ

  14. தੈɿXAMPPͷ࣌୅ ࣗ෼ͷ1$্Ͱ-JOVYͳͲͷ ଞͷ04Λ࠶ݱͰ͖ͳ͍΋ͷ͔ɾɾɾ Μʁ෺ཧతʹͰ͸ͳ͘ɺଞͷϋʔυ΢ΣΞ΍ 04Λ࿦ཧతʹ࠶ݱ͢Ε͹ྑ͍ͷͰ͸ɾɾʁ ͦ͏ͩʂԾ૝Խͩʂ

  15. ۙ୅ ͦΕ͸Ծ૝Խͷ࣌୅

  16. ۙ୅ɿԾ૝Խͷ࣌୅ ෺ཧతͳ؀ڥʹͱΒΘΕΔ͜ͱͳ͘ɺιϑτ΢ΣΞʹ Αͬͯࣗ༝ͳεϖοΫͰϋʔυ΢ΣΞΛ࠶ݱ͢Δٕज़ɻ ෺ཧϦιʔεʢCPUɺϝϞϦɺϋʔυσΟεΫɺωοτ ϫʔΫ౳ʣΛɺ࣮ࡍͷ෺ཧతͳߏ੒ͱ͸ҟͳΔ΋ͷ(࿦ ཧϦιʔε)ͷΑ͏ʹݟ͔͚ͤͯಈ࡞ͤ͞Δ͜ͱɻ Ծ૝Խ 7JSUVBMJ[BUJPO ͱ͸

  17. ۙ୅ɿԾ૝Խͷ࣌୅ • αʔόʔԾ૝Խ • ετϨʔδԾ૝Խ • ωοτϫʔΫԾ૝Խ • Etc Ծ૝Խͷछྨ

    ࠓճ͸αʔόʔԾ૝Խʹ য఺Λ౰ͯΔΑ
  18. ۙ୅ɿԾ૝Խͷ࣌୅ ෺ཧతͳ1୆ͷαʔόʔ্Ͱɺෳ਺ͷԾ૝తͳαʔόʔ ʢԾ૝αʔόʔʣΛӡ༻͢Δ͜ͱ ྫ. Windows PC্ͰMac΍LinuxΛಈ͔͢ αʔόʔͷԾ૝ԽͰ͸ɺઐ༻ͷԾ૝Խιϑτ΢ΣΞʹΑͬ ͯ෺ཧαʔόʔ্ͷϓϩηοαɾϝϞϦͱ͍ͬͨϦιʔε Λෳ਺ʹ෼ׂ͠ɺԾ૝αʔόʔʹׂΓ౰ͯͯ࢖͍·͢ αʔόʔԾ૝Խͱ͸

  19. ۙ୅ɿԾ૝Խͷ࣌୅ Ծ૝Խͷछྨ͸ೋͭ

  20. ۙ୅ɿԾ૝Խͷ࣌୅ Ծ૝Խͷछྨɿϗετܕ OSʹԾ૝Խιϑτ΢ΣΞΛΠϯ ετʔϧ͠ɺͦͷ্ͰԾ૝Ϛγϯ Λಈ͔͢ํࣜ Ծ૝Խιϑτ΢ΣΞ • Oracle VirtualBox •

    VMware Player • VMware Fusion • Windows Virtual PC • etc
  21. ۙ୅ɿԾ૝Խͷ࣌୅ ϗετܕͷσϝϦοτ ϗετܕͷϝϦοτ • ༷ʑͳOSΛԾ૝Ϛγϯͱͯ͠ಈ͔͢͜ͱ͕ग़དྷΔ(Windowsɺ Linux, etc) • طʹར༻͍ͯ͠Δαʔόʔ΍PCʹ΋Πϯετʔϧ͢Δ͜ͱ͕ग़ དྷΔͷͰखܰʹಋೖՄೳ

    • ϋʔυ΢ΣΞ΁ΞΫηε͢Δʹ͸ϗετOSΛܦ༝͠ͳ͚Ε͹ͳ Βͳ͍ҝɺ༨ܭͳΦʔόʔϔου͕͔͔Γॲཧ͕஗͍
  22. ۙ୅ɿԾ૝Խͷ࣌୅ Ծ૝ԽͷछྨɿϋΠύʔόΠβʔܕ αʔόʔ΁௚઀Πϯετʔϧ͠ Ծ૝ϚγϯΛՔಇͤ͞Δํࣜ Ծ૝Խιϑτ΢ΣΞ • VMware vSphere • Hyper-V

    • KVM • etc
  23. ۙ୅ɿԾ૝Խͷ࣌୅ ϋΠύʔόΠβʔܕͷσϝϦοτ ϋΠύʔόΠβʔܕͷϝϦοτ • ϗετܕͱҧͬͯϗετOSͰͷॲཧ͕ෆཁͱͳΓɺΦʔόʔ ϔου͕͔͔Βͳ͍ͷͰॲཧ଎౓͕଎͍ • αʔόʔू໿ʹΑΔίετ࡟ݮΛॏࢹ͗͢͠Δ͋·Γʹे෼ͳ෺ཧϦ ιʔεΛ֬อͰ͖͍ͯͳ͔ͬͨ৔߹ɺԾ૝αʔόʔͷεϖοΫ͕௿͘ ͳΓɺॲཧೳྗෆ଍ͱͳΔՄೳੑ͕͋Δ

    • ෺ཧαʔόʔͷো֐ൃੜϦεΫΛߟྀͤͣʹಋೖͯ͠͠·͏ͱɺສ͕ Ұɺো֐͕ൃੜͨ͠ͱ͖ʹରԠίετ͕ൃੜ͢Δɻ
 ·ͨͦͷαʔόʔ಺ʹ͋Δ͢΂ͯͷԾ૝؀ڥηΩϡϦςΟʔ͕৵֐͞ ΕΔϦεΫ΋ߟ͑ΒΕΔ
  24. ۙ୅ɿԾ૝Խͷ࣌୅ ٙ໰ɿԾ૝ԽͰશ͕ͯղܾ͞ΕΔͷ͔ʁ ͑ Ծ૝Խͯ͠΋ ΞϓϦέʔγϣϯ࣮ߦ؀ڥߏஙͷ ൥ࡶͬͯ͞มΘΒͳ͍ΑͶʁ ݁ہखಈͰ΍Δ͔͠ͳ͘ͳ͍ʁ ࣮͸΋͏Ұͭͷ࣌୅͕͋ͬͨʂʂʂ

  25. ۙ୅ͦͷ̎ ͦΕ͸Infrastructure as Codeͷ࣌୅

  26. *OTUBMMQBDLBHFT $SFBUFVTFST %FQMPZTFUUJOHpMFT 4UBSUTFSWJDFT 4FUDSPO ɾ ɾ ɾ ΋͏ͨ͘͞Μʂ ۙ୅ͦͷ̎ɿIaCͷ࣌୅

    खಈͷαʔόʔߏஙΛ͍ͯͨͦ͠ͷੲɾɾ
  27. ۙ୅ͦͷ̎ɿIaCͷ࣌୅ ͔͠΋αʔόʔ͕૿͑Ε͹૿͑Δ΄Ͳɾɾ /PPPPPPPʂʂʂ *OTUBMMQBDLBHFT $SFBUFVTFST %FQMPZTFUUJOHpMFT 4UBSUTFSWJDFT 4FUDSPO ɾ ɾ

    ɾ *OTUBMMQBDLBHFT $SFBUFVTFST %FQMPZTFUUJOHpMFT 4UBSUTFSWJDFT 4FUDSPO ɾ ɾ ɾ *OTUBMMQBDLBHFT $SFBUFVTFST %FQMPZTFUUJOHpMFT 4UBSUTFSWJDFT 4FUDSPO ɾ ɾ ɾ *OTUBMMQBDLBHFT $SFBUFVTFST %FQMPZTFUUJOHpMFT 4UBSUTFSWJDFT 4FUDSPO ɾ ɾ ɾ *OTUBMMQBDLBHFT $SFBUFVTFST %FQMPZTFUUJOHpMFT 4UBSUTFSWJDFT 4FUDSPO ɾ ɾ ɾ *OTUBMMQBDLBHFT $SFBUFVTFST %FQMPZTFUUJOHpMFT 4UBSUTFSWJDFT 4FUDSPO ɾ ɾ *OTUBMMQBDLBHFT $SFBUFVTFST %FQMPZTFUUJOHpMFT 4UBSUTFSWJDFT 4FUDSPO ɾ ɾ *OTUBMMQBDLBHFT $SFBUFVTFST %FQMPZTFUUJOHpMFT 4UBSUTFSWJDFT 4FUDSPO ɾ ɾ *OTUBMMQBDLBHFT $SFBUFVTFST %FQMPZTFUUJOHpMFT 4UBSUTFSWJDFT 4FUDSPO ɾ ɾ
  28. ۙ୅ͦͷ̎ɿIaCͷ࣌୅ खಈͷαʔόʔߏஙΛ΍Ί͍ͨɾɾ • ਓతϛε͕؆୯ʹൃੜ͢ΔΑͶʂ • ߏஙʹΉͬͪΌ͕͔͔࣌ؒΔ͡ΌΜʂ
 ͔͠΋αʔόʔͷ୆਺෼ͳʂ • ͱʹ͔͘໘౗ͩʂ΋͏Ұ౓ݴ͓͏ʂ໘౗ ͳͷͩʂ

  29. ۙ୅ͦͷ̎ɿIaCͷ࣌୅ *OGSBTUSVDUVSFBT$PEFͷ֓೦ͷ஀ੜ

  30. ۙ୅ͦͷ̎ɿIaCͷ࣌୅ *OGSBTUSVDUVSFBT$PEFͱ͸ Πϯϑϥߏ੒ΛίʔυԽ͠Α͏ͥʂ(ͦͷ·Μ·)
 ↓ ཁ͸ιϑτ΢ΣΞ؅ཧͷ֓೦ΛΠϯϑϥʹ΋ద༻ɻ
 OSύοέʔδɾϛυϧ΢ΣΞͷΠϯετʔϧ΍ઃఆมߋ ͳͲΛɺҰ౓࣮ߦͰ͖Ε͹࠶ར༻ੑͷߴ͍ʮίʔυʯʹ ͯ͠ɺόʔδϣϯ؅ཧͰ͖ΔܗͰ࢒͍ͯ͜͠͏ͱ͍͏΋ͷ

  31. ۙ୅ͦͷ̎ɿIaCͷ࣌୅ ༷ʑͳΠϯϑϥߏ੒؅ཧπʔϧ͕ੜ·Εͨ

  32. ۙ୅ͦͷ̎ɿIaCͷ࣌୅ ϗετ04ܕԾ૝ԽιϑτͱΠϯϑϥߏ੒؅ཧπʔϧ Λ૊Έ߹Θͤͨ։ൃ؀ڥߏங͕ελϯμʔυʹ ϗετ04ܕԾ૝Խ Πϯϑϥߏ੒؅ཧπʔϧ ʴ

  33. ۙ୅ͦͷ̎ɿIaCͷ࣌୅ *BDʹΑͬͯվળ͞Εͨ఺ • ؀ڥߏஙָ͕ʹͳͬͨ
 ϩʔΧϧ؀ڥ͚ͩͰͳ͘ςετ/ຊ൪؀ڥ΋ίϚϯυ Λୟ͚ͩ͘Ͱ؆୯ʹΞϓϦ࣮ߦ؀ڥΛ࡞ΕΔΑ͏ʹ ͳͬͨ • ώϡʔϚϯΤϥʔͷܹݮ
 ίʔυͰ؅ཧ͞Ε͍ͯΔͷͰखಈߏங࣌ΑΓώϡʔϚ

    ϯΤϥʔ͕ܹݮ • Կ୆Ͱ΋ಉ͡؀ڥ͕࡞ΕΔ
 ίʔυͰ؅ཧ͞Ε͍ͯΔͷͰ(ҎԼಉ)

  34. ͔ͦ͠͠ΕͰ΋
 ։ൃऀͷ೰Έ͸ਚ͖ͳ͍

  35. None
  36. ۙ୅ͦͷ̎ɿIaCͷ࣌୅ σϝϦοτ • ႈ౳ੑ(ಉ͡ૢ࡞ΛԿ౓܁Γฦͯ͠΋ɺಉ݁͡Ռ͕ಘ ΒΕΔ)Λ୲อ͢Δͷ͸݁ہ։ൃऀ • ֶशίετ͕ߴ͍ • ؀ڥߏஙߏஙͷ࣮ߦ͕࣌ؒඇৗʹ͔͔Δ •

    ґଘؔ܎ͷղܾ͕໘౗͔࣮ͭߦ݁Ռ͕؀ڥʹΑͬͯҟ ͳΔ(͓·͑ͷ؀ڥͰಈ͔ͳ͍ʁ͓Εͷ؀ڥͰ͸ಈ͘ Α)
  37. ۙ୅ͦͷ̎ɿIaCͷ࣌୅ IUUQTRJJUBDPNFOEBNJUFNTGCDBGCD Ҏલ"84Ͱ$IFGΛ࢖ͬͯαʔόʔߏங΍σϓ ϩΠΛߦ͍͕ͬͯͨɺͦΕ΋ਏ͔ͬͨ

  38. ۙ୅ͦͷ̎ɿIaCͷ࣌୅ ΋ͬͱؾܰʹʮ؀ڥʯͦͷ΋ͷΛ ѻ͑ͳ͍΋ͷͩΖ͏͔ʁ Μ طଘͷ؀ڥʹखΛՃ͑ΔͷͰ͸ͳ͘ɺҰճ ࣺͯͯ؆୯ʹ࡞Γ௚ͤΔΑ͏ʹ͢Ε͹ྑ͍ͷ Ͱ͸ʁͦͯͦ͠ͷ؀ڥΛͲ͜ʹͰ΋࣋ͪӡͼग़ དྷΔͳΒߋʹྑ͠ʂ ͦ͏ͩʂ·͞ʹ ؀ڥͷശ

    ίϯςφͩ ʂ
  39. ͍ͦͯͭ͠ʹ…

  40. Docker͕஀ੜͨ͠!!!

  41. ݱ୅ ͦΕ͸Dockerͷ࣌୅

  42. What is Docker?

  43. ݱ୅ɿDockerͷ࣌୅ %PDLFSͱ͸ ʮίϯςφʯͱ͍͏ശʹ࣮ߦ؀ڥɺϥΠϒϥϦɺΞ ϓϦέʔγϣϯΛೖΕͯ࡞੒ɾ഑෍ɾ࣮ߦ͢Δҝͷ ίϯςφܕԾ૝Խٕज़Λ࢖༻ͨ͠Φʔϓϯιʔει ϑτ΢ΣΞ

  44. ݱ୅ɿDockerͷ࣌୅ ίϯςφͬͯԿΑ ʮΧʔωϧؚ͕·Εͳ͍Linux؀ڥͷʲശʧʯ ίϯςφ͸αʔόʔͷϦιʔεΛִ཭ɾ੍ݶͯ͠ಠཱͨ͠ ࣮ߦ؀ڥΛ࣮ݱ͢ΔϓϩηεͰ͋ΓɺΧʔωϧ෦෼Λϕʔ εOSͱڞ༗͍ͯ͠Δɻ ͭ·Γ՟෺༌ૹͷίϯςφͷΑ͏ʹִ཭͞Εۭͨؒʹͳ Δɻ ίϯςφ͸ʮԾ૝ʯͱ͍͏ΑΓʮִ཭ʯ͕ద੾

  45. ݱ୅ɿDockerͷ࣌୅ ैདྷͷԾ૝Խͱͷҧ͍ Ծ૝Ϛγϯ ίϯςφ

  46. ݱ୅ɿDockerͷ࣌୅ ίϯςφͷϝϦοτ • ήετOSͷىಈΛඞཁͱ͠ͳ͍ͷͰɺىಈ͕ඇৗʹ ଎͍ • ؀ڥߏங΍؀ڥͷίϐʔָ͕ͪΜ • ϋʔυ΢ΣΞΛ·Δ͝ͱԾ૝Խ͍ͯ͠ΔΘ͚Ͱ͸ͳ ͍ͷͰΦʔόʔϔου͕গͳ͍(ίϯςφ͸ϗετOS

    ͱΧʔωϧ෦෼Λڞ༗͍ͯ͠ΔͷͰ)
  47. ݱ୅ɿDockerͷ࣌୅ ίϯςφͷσϝϦοτ • ͲΜͳOSͰ΋ಈ࡞Ͱ͖ΔΘ͚Ͱ͸ͳ͍(Կ౓΋ݴ͏͕ί ϯςφ͸ϗετOSͱΧʔωϧ෦෼Λڞ༗͍ͯ͠ΔͷͰ)
 
 ͪͳΈʹϗετOSͰݴ͏ͱɺDocker͸Linuxͷ্Ͱ͠ ͔ಈ͔ͳ͍ ͡Ό͋ͳͥ 8JOEPXT΍.BDͰಈ͔͕͘

    ࠷ޙʹઆ໌͢ΔΑ
  48. DockerͷεϩʔΨϯ

  49. Build, Ship, and Run Any App, Anywhere

  50. ݱ୅ɿDockerͷ࣌୅ ʮ؆୯ʹ؀ڥΛߏஙɾ࣋ͪӡͼͰ͖ͯͲ͜Ͱ΋ಈ͘ɺ ɹͦΕ͕%PDLFSͩʯ ػೳ આ໌ #VJME %PDLFSΠϝʔδͷ࡞੒ 4IJQ %PDLFSΠϝʔδͷڞ༗ 3VO

    %PDLFSίϯςφͷಈ࡞ ༏ΕͨϙʔλϏϦςΟ
  51. None
  52. ݱ୅ɿDockerͷ࣌୅ %PDLFSΛ࢖͏ࡍͷجຊతͳྲྀΕ Dockerfile
 ↓
 DockerΠϝʔδ
 ↓
 Dockerίϯςφ

  53. ݱ୅ɿDockerͷ࣌୅ ίϯςφΠϝʔδͷߏங DockerͰ͸ɺΞϓϦέʔγϣϯͷ࣮ߦʹඞཁʹͳΔϓϩ άϥϜຊମ/ϥΠϒϥϦ/ϛυϧ΢ΣΞ/OS/ωοτϫʔΫͷ ઃఆͳͲΛ1ͭʹ·ͱΊͯɺίϯςφͷ౔୆ͱͳΔDocker ΠϝʔδΛ࡞੒ɻ(OSΠϝʔδͷΑ͏ͳ΋ͷ)

  54. ݱ୅ɿDockerͷ࣌୅ Πϝʔδͷ࡞੒ʹඞཁͳͷ͕%PDLFSpMF Dockerfile͸DockerΠϝʔδΛ࡞੒͢Δҝͷઃܭਤ ʮԿͷΠϝʔδΛجʹɺԿΛͲͷΑ͏ʹ࣮ߦ͢Δ͔ʯΛه ͢

  55. ݱ୅ɿDockerͷ࣌୅ %PDLFSpMFͷྫ )FMMPXPSME 
 # ར༻͢ΔϕʔεΠϝʔδͷࢦఆ FROM ubuntu:18.04 # ίϚϯυ

    CMD echo 'Hello docker world!'
  56. ݱ୅ɿDockerͷ࣌୅ Q. ϕʔεΠϝʔδͬͯͲ͔͜Βऔಘͯ͠Δͷʁ A. σϑΥϧτͰ͸Docker Hub(Ϣʔβʔ͕࡞੒ͨ͠DockerΠ ϝʔδΛΞοϓϩʔυͯ͠ެ։ɾڞ༗Ͱ͖ΔαʔϏε)͔Β FROMʹॻ͔ΕͨΠϝʔδ໊Λݕࡧͯ͠औಘ͢Δ
 URIͰ͋Ε͹֘౰ͷϦϙδτϦ͔Βऔಘ͢Δ(AWS ECR౳)

    ྫઌఔͷ'30.VCVOUVͰ͋Ε͹%PDLFS)VCͰެ։͞Ε͍ͯΔ %PDLFSެࣜΠϝʔδVCVOUVͷͱ͍͏λάΛࢦ͍ͯ͠Δ
  57. ݱ୅ɿDockerͷ࣌୅ %PDLFSpMF͔ΒΠϝʔδΛϏϧυ 
 $ docker build ./ -t sample
 `.

    /`͸Dockerfile͕͋ΔσΟϨΫτϦΛࢦ͢
 t(tag)ΦϓγϣϯͰ'໊લ:λά' (໊લͱΦϓγϣϯͷλά)Λ ࢦఆ 
 # docker imagesͰ࡞੒ͨ͠ΠϝʔδΛ֬ೝ
 $ docker images | grep sample
 sample latest 08af1fc5545c 8minutes ago 64.2MB

  58. ݱ୅ɿDockerͷ࣌୅ Πϝʔδ͔ΒίϯςφΛىಈ 
 # ίϯςφΛىಈ
 $ docker run example Hello

    docker world! # ϗετʢखݩͷλʔϛφϧʣͱίϯςφͷඪ४ೖग़ྗ Λͭͳ͛Δ(ίϯςφ಺෦Ͱ࡞ۀ͍ͨ͠ͱ͖ʹ࢖͏)
 $ docker run -it example /bin/bash root@909bb32e7cea:/# ίϯςφ಺෦
  59. લεϥΠυ·ͰͷجຊฤͱDockerHubΛ׆༻ͨ͠Ԡ༻ฤ͕ ͋ΔΑ ݱ୅ɿDockerͷ࣌୅ ϋϯζΦϯͷࢿྉެ։ͯ͠·͢ IUUQCJUMZ1qUQK

  60. ݱ୅ɿDockerͷ࣌୅ ͳͥίϯςφ͸མͪΔͷ͔ ίϯςφ͕ىಈ͠ଓ͚Δʹ͸Կ͔͠Βͷϓϩηε͕ϑΥΞ άϥ΢ϯυͰಈ͘ඞཁ͕͋Δ ϑΥΞάϥ΢ϯυϓϩηεͱόοΫάϥ΢ϯυϓϩηε ୺຤͔ΒͷೖྗΛड͚෇͚Δঢ়ଶʹͳ͍ͬͯΔϓϩηε͸ϑΥΞάϥ΢ϯυϓ ϩηεͱ͍͍ɺͦ͏Ͱͳ͍ଞͷશͯͷϓϩηε͸όοΫάϥ΢ϯυϓϩηε Ͱ͢ɻ
 
 ϑΥΞάϥ΢ϯυϓϩηεͷྫɿtopίϚϯυ


    topίϚϯυΛୟ͍ͨΒϓϩηε͕ϑΥΞάϥ΢ϯυͰىಈ͠·͢ɻ
 Ctrl + CΛೖྗ͢Δ͜ͱʹΑͬͯϓϩηεʹSIGINTΛ௨஌͞Εɺϓϩηε͕ऴ ྃ͠·͢ɻ
  61. ݱ୅ɿDockerͷ࣌୅ %PDLFSͷϝϦοτ ᶃ଎͍
 αʔόʔԾ૝ԽͰ͸Ծ૝Ϛγϯ͝ͱʹOSΛՔಇͤ͞Δඞཁ͕͋Δ͕ɺίϯςφ͸ͦͷඞཁ ͕ແ͍ͷͰىಈ͕ߴ଎
 
 ᶄ͍ܰ
 ؾܰʹ؀ڥΛ࡞Γ௚ͤΔΑɺ͔͠΋෦෼తʹͩɻ(Nginxͷઃఆʹมߋ͕͋ͬͨ৔߹͸Nginx ͷίϯςφ͚ͩ࠶࡞੒͢Ε͹ྑ͍ɻଞͷPHP΍MySQLͷίϯςφ͸มΘΒͳ͍)
 


    ᶅϚϧν(؀ڥΛෳ਺༻ҙͰ͖Δ)
 ϓϩδΣΫτ͕ෳ਺͋Δ৔߹͸ͦͷ෼։ൃ؀ڥΛ༻ҙ͠ͳ͚Ε͹͍͚ͳ͍͚ͲɺDocker࢖ ͑͹ؾʹ͢Δඞཁ͸ͳ͍
 
 ᶆօϋοϐʔ
 ʮ܅ͷͱ͜Ͱ͸ಈ͔ͳ͍ʁͰ΋ࣗ෼ͷͱ͜͸ಈ͘Αʯ͕ແ͘ͳΔ
 ؀ڥΛҰ౓࡞ͬͪΌ͑͹օͰڞ༗Ͱ͖ΔͷͰݸਓͰ؀ڥߏஙΛ͢Δඞཁ͕ͳ͍Αɻ
 ͦ͏ɺDockerfile΍Πϝʔδ͕͋Ε͹Ͷ
  62. ετϨε͔Βͷղ์

  63. ൪֎ฤ ͳΜͰDocker͸ Mac΍WindowsͰಈ͘ͷʁ %PDLFS͸ͦ΋ͦ΋-JOVYͷ্Ͱ͔͠ ಈ͔ͳ͍ͬͯݴͬͯͨΑͶʁ ·͔͞-JOVYͷԾ૝ϚγϯΛཱͯͯɺ͔ͦ͜ Β͞Βʹίϯςφ্ཱͪ͛ͯΔͱ͔ʁ

  64. ൪֎ฤɿDockerͷ࢓૊Έ ࣮͸ͦͷ௨Γͩͬͨ Dockerᴈ໌ظ͸VirtualBoxͱ͔ͰԾ૝ϚγϯΛཱͯͯɺͦ ͷ্ͰDockerΛ࢖͍ͬͯͨ νΨ΢ɺι΢δϟφΠ ʮ%PDLFSʁ7JSUVBM#PYͷ্Ͱಈ͔ͤ͹ྑ͘Ͷʁʯ

  65. ൪֎ฤɿDockerͷ࢓૊Έ ΋ͬͱ%PDLFSͷར༻Λ։ൃऀʹͱͬͯ ΍͘͞͠͠Α͏ʂ %PDLFSGPS8JOEPXT.BDര஀ʂ

  66. ൪֎ฤɿDockerͷ࢓૊Έ %PDLFSGPS8JOEPXT.BD͕ղܾͨ͜͠ͱ ίϯςφ͕ىಈ͢ΔҝͷΠϯϑϥ ϕʔε04౳ ΛҰ͔Β༻ҙͤͣʹࡁΉΑ͏ʹͳͬͨ ˣ ίϯςφ͕Ͳ͜ͷ্Ͱىಈ͍ͯ͠Δ͔΋ҙࣝͤͣ ʹ؆୯ʹ࢖͑Δɻ ͔͋ͨ΋8JOEPXT.BDͷ্Ͱίϯςφ͕ಈ͍ ͍ͯΔΑ͏ͳײ֮

    ࣮ࡍʹ͸΋ͪΖΜҧ͏Αʂ 
  67. Ͱ͸࣮ࡍʹ Docker for Windows/Mac͸ ͦΕͧΕͲ͏ಈ͍͍ͯΔͷ͔ʁ Windows͔ΒݟͯΈΔ

  68. ࣮͸)ZQFS7Λ༗ޮԽͨ࣌͠ʹ8JOEPXTࣗମ΋ϋΠύʔόΠβ্ͷ Ծ૝ϚγϯͰಈ࡞͢Δ04ʹͳΔɻ ͦͯ͠%PDLFS͕ಈ͘ͷ΋ϋΠύʔόΠβ্ͷ-JOVYϕʔεͷԾ૝Ϛγϯ https://docs.microsoft.com/ja- jp/virtualization/ windowscontainers/deploy- containers/linux-containers ˡͷਤ͸࣮͸ҎԼϦ ϯΫͷ.JDSPTPGUެ ࣜυΩϡϝϯτʹ

    ࡌͬͯΔ Ϝονϟద ౰͗ͯ͢.JDSPTPGU Ͳ͏ͨ͠׼ 
  69. ൪֎ฤɿDockerͷ࢓૊Έ .BD΋ϋΠύʔόΠβʔ )ZQFS,JU Λར༻͍ͯ͠Δ

  70. ૯ׅ ͦΕ͸ΤϯσΟϯάͷ߹ਤ

  71. ૯ׅ ࣗ෼ୡ͕΍Γ͍ͨ͜ͱ͸͋͘·Ͱ ΞϓϦέʔγϣϯ։ൃ ίʔσΟϯάʹूத͢Δҝʹ ʮଞʯͷ࡞ۀΛ͍͔ʹ࡟Δ͔ தͰ΋؀ڥߏங͸෼͔Γ΍͘͢࡟ΕΔ෦෼ ͔ͩΒ%PDLFSΛಋೖ

  72. ૯ׅ ࣗ෼ୡ͕ͳͥ͜ͷٕज़Λ ࢖͍ͬͯΔͷ͔ ཧ༝ͱೲಘײ ͕େ੾

  73. ηϛφʔ͝ࢀՃ ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ