Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Build Containers with Dockerfile Best Practicies

Build Containers with Dockerfile Best Practicies

Kohei Ota

May 13, 2019
Tweet

More Decks by Kohei Ota

Other Decks in Technology

Transcript

  1. +BQBO$POUBJOFS%BZTͰ
    ࡞ͬͨެࣜσϞΞϓϦͷ
    %PDLFSpMFʹ͍ͭͯʢԾʣ
    !JOEVDUPS
    $POUBJOFS#VJME.FFUVQ

    View Slide

  2. +BQBO$POUBJOFS%BZTͰ
    ࡞ͬͨެࣜσϞΞϓϦͷ
    %PDLFSpMFʹ͍ͭͯʢԾʣ
    !JOEVDUPS
    $POUBJOFS#VJME.FFUVQ

    View Slide

  3. ࠓ೔͸ͦΜͳ࿩͸ʢ΄΅ʣ
    Ұ੾͠ͳ͍Ͱ͢

    View Slide

  4. ϕετϓϥΫςΟεʹԊͬͯɺ
    %PDLFSpMFͷՄಡੑͱ
    ΩϟογϡɺΠϝʔδͷαΠζͷ
    ઓུʹ͍ͭͯߟ͑ͯΈͨ
    !JOEVDUPS
    $POUBJOFS#VJME.FFUVQ

    View Slide

  5. ࣗݾ঺հ
    w JOEVDUPS
    w %PDLFS.FFUVQ5PLZP0SHBOJ[FS ࿬໾

    w %PDLFSpMFͱӳޠ͕޷͖
    w কདྷͷເ͸೦͚ͨͩ͡Ͱαʔόʔ͕͍͍ײ͡ʹ্ཱ͕ͪΔ
    Α͏ʹͳΔ͜ͱ

    View Slide

  6. %PDLFSCVJMEͯ͠·͔͢ʁ

    View Slide

  7. %PDLFSSVOͯ͠·͔͢ʁ

    View Slide

  8. %PDLFSSVOͯ͠·͔͢ʁ

    View Slide

  9. %PDLFSpMFͷϕετϓϥΫςΟε
    ͝ଘ஌Ͱ͔͢ʁ

    View Slide

  10. IUUQTXXXTMJEFTIBSFOFU
    %PDLFSEDTGEPDLFSpMFCFTU
    QSBDUJDFT

    View Slide

  11. %PDLFS$PO
    4BO'SBODJTDPͰൃද͞Εͨࢿྉ

    View Slide

  12. w Ϗϧυ࣌ؒ
    w ΠϝʔδαΠζ
    w ϝϯςφϯεੑ
    w ηΩϡϦςΟ
    w ࣋ଓੑ࠶ݱੑ

    View Slide

  13. %PDLFSCVJMEͷ͓೰ΈϙΠϯτ
    w ΠϝʔδαΠζ
    w Ϗϧυͷ଎͞
    w Մಡੑͱϝϯςφϯεੑ
    w ࠶ݱੑ
    w ηΩϡϦςΟ

    View Slide

  14. %PDLFSCVJMEͷ͓೰ΈϙΠϯτ
    w ΠϝʔδαΠζˡ
    w Ϗϧυͷ଎͞
    w Մಡੑͱϝϯςφϯεੑ
    w ࠶ݱੑ
    w ηΩϡϦςΟ

    View Slide

  15. ΠϝʔδαΠζ͸૿͑Δ
    w %PDLFSΠϝʔδΛӡ༻͍ͯ͠ΔͱɺαΠζͷංେԽ͸ආ͚
    ΒΕͳ͍໰୊
    w ύοέʔδͷ௥Ճ
    w ΞϓϦέʔγϣϯґଘͷϥΠϒϥϦͷ௥Ճ
    w ಺แ͓͖͍ͯͨ͠όΠφϦϑΝΠϧͷ௥ՃͳͲͳͲ

    View Slide

  16. ΠϝʔδαΠζΛ཈͑ΔऔΓ૊Έ
    ͦͷܰྔͳϕʔεΠϝʔδΛ࢖͏

    View Slide

  17. ϕʔεΠϝʔδͷ࿩ ద౰

    ΠϝʔδαΠζ ൚༻ੑ ॊೈੑ ֦ுੑ
    རศੑ
    %FCJBO TMJN
    ☓ ˚
    ˕ ˕
    ˕ ˕
    ˑ ˑ

    "MQJOF ˕ ˓ MJCD͕ʜ
    ˓ ˕
    #VTZCPY ˑ ˚ ˚ ˓
    4DSBUDI ☠ ʁʁʁʁ ☓ 㱣

    View Slide

  18. ϕʔεΠϝʔδͷબఆ
    w جຊɺΠϝʔδαΠζ͸ؾʹ͢Δ΂͖
    w ͱ͸͍͑ɺϥΠϒϥϦͷґଘؔ܎͕ਂ͘ͳͬͯ͠·͏৔߹ɺ

    Πϝʔδͷӡ༻ίετ্͕͕ͬͯ͠·͏ͷͰແཧ͠ͳ͍ํ͕

    ྑ͍͜ͱ΋ଟ͍
    w ׳Εͳ͍͏ͪ͸"MQJOFΛແཧʹ࢖͏ඞཁ͸ͳ͍ͱ͸ࢥ͏

    View Slide

  19. ΠϝʔδαΠζΛ཈͑ΔऔΓ૊Έ
    ͦͷNVMUJTUBHFCVJMEΛ࢖͏

    View Slide

  20. NVMUJTUBHFCVJMEͱ͸
    w ಉҰ%PDLFSpMFͷதͰʮผͷϏϧυͷॲཧʯΛݺͼग़͢࢓૊Έ
    w ྫ
    HPͷΠϝʔδͰίϯύΠϧͨ͠HPͷόΠφϦΛ/PEFKTͷίϯςφ
    ʹ৐ͤͨΓͰ͖Δ
    w ͭͷΠϝʔδʹෳ਺ͷΞϓϦέʔγϣϯґଘύοέʔδΛೖΕΔඞ
    ཁ͕ͳ͘ͳΔͷͰɺΠϝʔδαΠζ΋μ΢ϯ
    w %PDLFSpMFͷதͰෳ਺ճ'30.Λॻ͘ͱ࣮ݱͰ͖Δ

    View Slide

  21. NVMUJTUBHFCVJMEͱ͸
    IVHPͷ$-*Λ%-ͯ͘͠Δεςʔδ
    औಘͨ͠όΠφϦΛ/PEFͷΠϝʔδʹೖΕΔ
    XHFUͱ͔DBDFSUJpDBUFTͱ͔͸ΞϓϦͷ
    ίϯςφʹ࢒Βͳ͍

    View Slide

  22. ΠϝʔδαΠζΛ཈͑ΔऔΓ૊Έ
    ͦͷΞϓϦέʔγϣϯͷಈ࡞ʹ
    ؔ܎ͷͳ͍ϑΝΠϧΛऔΓࠐ·ͳ͍

    View Slide

  23. Ͳ͏͍͏͜ͱ͔
    w HJU഑ԼͷϑΝΠϧ͸EPDLFSJHOPSF͢Δ
    w ίϯύΠϧܕݴޠͷ৔߹ɺιʔείʔυ͸͍Βͳ͍
    w ྫHPͳΒόΠφϦɺKBWBͳΒXBSKBS͚͕ͩ͋Ε͹ྑ͍
    w ϓϩμΫγϣϯϏϧυΛਖ਼͘͠࢖͏
    w ྫ։ൃ༻ϥΠϒϥϦ͸Πϝʔδͷதʹ͸औΓࠐ·ͳ͍
    w ΤσΟλ΍σόοάπʔϧ΋جຊ͸ೖΕͳ͍

    View Slide

  24. ΞηοτͷίϯύΠϧʹ࢖ͬͨ
    ϥΠϒϥϦΛফͯ͠ɺ
    ϓϩμΫγϣϯʹඞཁͳ
    ґଘؔ܎ΛೖΕ௚͢
    ͍ܰͷͰBMQJOFϕʔεʹ͢Δ
    ίϯύΠϧͷͱ͖BMQJOFͩͱͭΒΈ
    ͕ਂ͍ͷͰɺϝϯςੑΛߟྀͯ͠
    EFCJBOϕʔεͰίϯύΠϧ͢Δ

    View Slide

  25. %PDLFSCVJMEͷ͓೰ΈϙΠϯτ
    w ΠϝʔδαΠζ
    w Ϗϧυͷ଎͞ˡ
    w Մಡੑͱϝϯςφϯεੑ
    w ࠶ݱੑ
    w ηΩϡϦςΟ

    View Slide

  26. Ϗϧυͷ଎౓Λ্͛Δཁૉ
    w ϏϧυΩϟογϡΛޮ͔ͤΔ
    w ฒྻੑΛ্͛Δ
    w Ͱ͖ΔݶΓڞ௨ͷϕʔεΠϝʔδΛ࢖͏

    View Slide

  27. %PDLFSpMFͷΩϟογϡ
    w มߋස౓͕௿͍͕ॲཧʹ͕͔͔࣌ؒΔ΋ͷΛ্ʹدͤΔ
    w ύοέʔδϚωʔδϟͱ͔ɺMPDLϑΝΠϧͷ$01:΋্ʹدͤΔ
    w ύοέʔδͷΠϯετʔϧͱΞοϓσʔτ͸ಉ͡ߦʹدͤΔ
    w ྫBQUHFUVQEBUFBQUHFUJOTUBMMFNBDT
    w #VJME,JUΛೖΕΔ
    w NPVOUUZQFDBDIFͷ׆༻

    View Slide

  28. %PDLFSpMFͷฒྻੑ
    w NVMUJTUBHFCVJMEΛ׆༻͢Δ
    w #VJME,JUΛೖΕΔ

    View Slide

  29. ϕʔεΠϝʔδͷ࢓૊ΈΛ஌Δ
    w %PDLFSΠϝʔδͷ࣮ମ͸6'4ͱݺ͹ΕΔ-BZFSFE'JMFTZTUFN
    w ڞ௨ͷϕʔεΠϝʔδΛ֤ΞϓϦέʔγϣϯͰ࢖͏
    w τʔλϧͷϕʔεΠϝʔδʹ࢖͏σΟεΫ༰ྔ͕࡟ݮͰ͖Δ
    w 1VMM΍#VJMEʹ͔͔Δ͕࣌ؒ࡟ݮͰ͖Δ
    w ڞ௨ॲཧ͸ΠϝʔδԽ͢Δͷ΋ͭͷख

    View Slide

  30. ݁࿦#VJME,JUΛ࢖͏

    View Slide

  31. %PDLFSCVJMEͷ͓೰ΈϙΠϯτ
    w ΠϝʔδαΠζ
    w Ϗϧυͷ଎͞
    w Մಡੑͱϝϯςφϯεੑˡ
    w ࠶ݱੑ
    w ηΩϡϦςΟ

    View Slide

  32. Ϗϧυͷ଎౓ͱΠϝʔδͷαΠζ
    Λ࠷༏ઌ͍ͯ͘͠ͱɺ࣍ୈʹ
    %PDLFSpMF͕ຐ۸ͱԽ͢

    View Slide

  33. ຊηΫγϣϯͰ͸ɺ%PDLFSpMFͷ
    ՄಡੑɾϝϯςφϯεੑΛͲ͏ߴ
    Ί͍͔ͯ͘ʹ͍ͭͯߟ͑ͯΈΔ

    View Slide

  34. %PDLFSpMFͷՄಡੑ
    w ಡΈ΍͍͢%PDLFSpMFͱ͸Կ͔
    w ΍͍ͬͯΔ͜ͱ͕໌֬
    w ߦ਺͕୹͍
    w %PDLFSʹ͓͚ΔίϯςφϓϩηεͷݪଇΛकΔ
    w FOUSZQPJOUTIʹཔΓ͗ͯ͢Δ৔߹ઃܭ͕Α͘ͳ͍͔΋͠Εͳ͍
    w ֤εςʔδͷ໋໊نଇ΋ॏཁ
    w ίϝϯτͰ͸8IBUͰ͸ͳ͘)PX8IZΛॏࢹ͢Δ

    View Slide

  35. %PDLFSpMFͷϝϯςφϯεੑ
    w όʔδϣϯͷ໌هͳͲ͕ඞཁͳύοέʔδΛೖΕΔ৔߹͸
    ม਺ʹ੾Γग़͢
    w มߋ؅ཧͷखؒΛݮΒ͢
    w Ϗϧυͷͨͼʹ݁Ռ͕มΘΔͷ͸࿦֎
    w λά΋ͦ͏͕ͩɺͰ͖ΔݶΓඞཁͳπʔϧͷόʔδϣϯ͸
    ݻఆ͓ͯ͘͠

    View Slide

  36. %PDLFSCVJMEͷ͓೰ΈϙΠϯτ
    w ΠϝʔδαΠζ
    w Ϗϧυͷ଎͞
    w Մಡੑͱϝϯςφϯεੑ
    w ࠶ݱੑˡ
    w ηΩϡϦςΟ

    View Slide

  37. %PDLFSpMFͷ࠶ݱੑ
    w ϝϯςφϯεੑͷͱ͜ΖͰݴٴͯͨ͠ͷͰεΩοϓ

    View Slide

  38. %PDLFSCVJMEͷ͓೰ΈϙΠϯτ
    w ΠϝʔδαΠζ
    w Ϗϧυͷ଎͞
    w Մಡੑͱϝϯςφϯεੑ
    w ࠶ݱੑ
    w ηΩϡϦςΟˡ

    View Slide

  39. %PDLFSpMFʹ͓͚ΔηΩϡϦςΟ
    w ػີ৘ใͷऔѻ͍
    w Ϗϧυதʹ(JUQVMM΍44)͢Δͱ͖ͷ伴ͷ؅ཧ
    w ΞϓϦέʔγϣϯͷγʔΫϨοτΩʔͷ؅ཧ
    w Ұ࣌తͳσʔλΛͲ͜ʹͲ͏อଘ͢Δ͔ͷઃܭ

    View Slide

  40. 44)΍(JUͷ伴

    View Slide

  41. NPVOUUZQFTFDSFU
    Λ࢖͏

    View Slide

  42. NPVOUUZQFTFDSFUͱ͸
    w %PDLFS͔Βೖͬͨ৽໋͍͠ྩ
    w %PDLFSϏϧυதʹػີ৘ใΛ҆શʹϚ΢ϯτ͢ΔͨΊͷػ

    w ੒Ռ෺ʹ伴͕࢒Βͳ͍ʂ΂ΜΓʂ
    w 36/NPVOUUZQFTFDSFU JETTI UBSHFUSPPUTTI
    [email protected]
    ˢΈ͍ͨͳײ͡ͰࢦఆͰ͖Δɻ

    View Slide

  43. ΋͏ͪΐͬͱଓ͖·͢

    View Slide

  44. %PDLFSpMFͷઓུͱ
    %PDLFSΒ͍͠ΞϓϦέʔγϣϯͷ
    ࡞ΓํͱͷؔΘΓํ

    View Slide

  45. %PDLFSΒ͍͠ΞϓϦέʔγϣϯʁ
    w %PDLFSͷྑ͞
    w มԽͷ଎͍ΞϓϦέʔγϣϯʹରͯ͠ɺ#VJME4IJQ3VO
    ͷΤίγεςϜΛఏڙ͍ͯ͠Δ͜ͱ
    w ਖ਼͘͠࢖͑͹ʮͲ͜Ͱ΋ʯʮಉ͡Α͏ʹʯಈ͘؀ڥ͕࣮
    ݱͰ͖Δ

    View Slide

  46. %PDLFSΛlਖ਼͘͠z࢖͏
    w ෆཁͳ΋ͷ͸ೖΕͳ͍
    w มߋͷೖΓ΍͍͢Օॴ͸΂ͨॻ͖ʹ͠ͳ͍
    w ։ൃ؀ڥɺݕূ؀ڥɺຊ൪؀ڥͰͰ͖ΔݶΓಉ͡ΠϝʔδΛ࢖͏
    w ؀ڥ͝ͱͷґଘੑ஫ೖʹ͸؀ڥม਺΍FOUSZQPJOUΛ׆༻͢Δ
    w ίϯςφϓϩηεͷݪଇΛ஌Δ कΔ͔Ͳ͏͔͸ผͱͯ͠

    View Slide

  47. ͱ͸͍͑ӡ༻࣌ʹࠔΔ͜ͱ΋͋Δ
    w Ͳ͏ͯ͠΋44)͍ͨ͠ɾɾɾWJN࢖͍͍ͨɾɾɾ
    w 44)͸جຊ࢖Θͳ͍ 'BSHBUFͱ͔Ͱແ͍ݶΓɺFYFDJUͱ͔͢
    Ε͹໰୊ͳ͍͸ͣ

    w σόοάπʔϧ͕ೖ͍ͬͯͳ͍ίϯςφ಺ͰσόοάπʔϧΛ
    ىಈ͢Δํ๏ 1*%ωʔϜεϖʔεͷڞ༗ػೳΛ࢖͏

    w EPDLFSSVOSNJUQJEDPOUBJOFSBQQ
    [email protected]

    View Slide

  48. ΍΂͑ɺSVOͪ͠Όͬͨ

    View Slide

  49. ։ൃͱӡ༻ͱΞϓϦͷߏ଄ͷ౎߹
    w ͜͜͸Ͳ͏ͯ͠΋ίϯύΠϧ͠௚͕͠ඞཁͳͷͰ4UBHJOH
    ͱ1SPEVDUJPOͰΠϝʔδΛ෼͚ͳ͍ͱ͍͚ͳ͍ΜͰ͢ʂ
    w ΞϓϦέʔγϣϯͷ࣮ߦʹΫιͰ͔͍όΠφϦ͕ඞཁͰϏ
    ϧυ͢Δͷʹࢮ͵΄Ͳ͕͔͔࣌ؒͬͯ։ൃͲ͜Ζ͡Όͳ͍
    ΜͰ͢ʼʻ
    w ΠϝʔδαΠζখ͘͞͠Α͏ͱ͢ΔͱΩϟογϡ͕ޮ͖ͮ
    Β͘ͳͬͯਏ͍ΜͰ͕͢ʁʁʁ

    View Slide

  50. ͍Ζ͍Ζ͋ΔΑͶ

    View Slide

  51. ϕετϓϥΫςΟεͱ%PDLFSXBZ
    ͷཱ྆ΛɺΞϓϦέʔγϣϯͷߏ଄
    ΛकΓͳ͕Β୲อ͢Δͷ͸೉͍͠ɻ

    View Slide

  52. ϕετϓϥΫςΟε͸
    ͋͘·Ͱ΋ϕετϓϥΫςΟε

    View Slide

  53. େࣄͳͷ͸͖ͪΜͱ஌্ͬͨ
    Ͱɺ༻๏༻ྔΛकͬͯ࢖͏͜ͱ

    View Slide

  54. ,OPXZPVSUPPMT
    LOPXZPVSBQQMJDBUJPO

    View Slide

  55. 5IBOLTGPSZPVSBUUFOUJPO

    View Slide