ハンズオン資料: https://github.com/ihcomega56/DockerHandsOn
%PDLFSΑͪΑͪา͖ϋϯζΦϯ
View Slide
2ࣗݾհΑ͜ͳ "ZBOB:PLPUB• +'SPHͷ%FWFMPQFS"EWPDBUF• લ৬·ͰओʹόοΫΤϯυͷ։ൃʢ4*FS ࠂձࣾ ূ݊ελʔτΞοϓʣ• ࠷ۙɺੜ·ΕͯॳΊͯಉ͡өըΛ؍ͨ!"#$$%&'(#)*+,%-.
ʮΑͪΑͪา͖ʯγϦʔζಛ• ʮ͡ΊͷҰาʯͷ࣍ͷεςοϓʂ• ʮ͡ΊͷҰาʯͰֶΜͩ༰ʹ͍ͭͯखΛಈ͔ͯ͠ΈΔ• ཏతʹԿͰͬͯΈΔͷͰͳ͘ɺ·ͣ͡Ίʹඞཁͳػೳɾૢ࡞Λ༏ઌ͢Δલఏࣝ• %PDLFS͡ΊͷҰาIUUQTTQFBLFSEFDLDPNJIDPNFHBUIFGJSTUTUFQPGEPDLFS
%PDLFSͷ؆୯ͳ͓͞Β͍
%PDLFSͷΞʔΩςΫνϟ• %PDLFSσʔϞϯ͕ίϯςφͷཧ࣮ߦΛߦ͏• Ϣʔβʔ%PDLFSΫϥΠΞϯτͱΓͱΓ͢Δ͜ͱͰؒతʹσʔϞϯͰΓ͍ͨ͜ͱΛ࣮ݱ͢Δ• ʑͷ։ൃΛ͢Δ্ͰσʔϞϯͱΫϥΠΞϯτͷҧ͍͋·Γҙࣝ͠ͳ͍%PDLFSΫϥΠΞϯτ%PDLFSσʔϞϯίϯςφίϯςφίϯςφίϚϯυΛ͏%PDLFSΤϯδϯ
• ίϯςφΛ࡞͢ΔͨΊͷ໋ྩ͕ೖͬͨύοέʔδ• طʹଘࡏ͢ΔͷΛ͏͜ͱɺ࡞Δ͜ͱͰ͖Δ• Πϝʔδ͕࣮ߦঢ়ଶʹͳͬͨΠϯελϯε͕ίϯςφ%PDLFSΠϝʔδ%PDLFSΠϝʔδ࣮ߦڥͱͯ͠"MQJOF ܰྔͷ-JOVYΛͬͯʂ+BWBͱ(SBEMFΛΠϯετʔϧͯ͠ʂ࣮ߦϑΝΠϧ͜ͷσΟϨΫτϦʹஔͯ͠ʂ+BWBΞϓϦέʔγϣϯΛ࣮ߦͯ͠ʂ
·ͣެ։͞Ε͍ͯΔΠϝʔδΛͬͯΈΑ͏
%PDLFS)VC͔ΒΠϝʔδΛऔಘ%PDLFSΠϝʔδΛμϯϩʔυ͢Δdocker pull%PDLFSϨδετϦʹϩάΠϯ͢Δdocker login%PDLFSΠϝʔδΛݕࡧ͢Δdocker search
ҎԼͷ͍ͣΕ͔ͰΠϝʔδΛಛఆ͢Δ• *%• Πϝʔδ໊<λά໊>• Πϝʔδ໊%PDLFSΠϝʔδͷಛఆɾ࣮ߦίϯςφΛ࡞ɾ࣮ߦ͢Δdocker runσϑΥϧτϑΥΞάϥϯυ࣮ߦɻόοΫάϥϯυʹ͢ΔʹEΦϓγϣϯΛ͚ͭΔίϯςφΛ࡞͢Δdocker createίϯςφΛ࣮ߦ͢Δdocker start
खݩͷཧ• ஈʑϩʔΧϧʹΠϝʔδ͕ͨ·͍ͬͯ͘ͷͰ࣌ʑ֬ೝ͠Α͏• ͍Βͳ͍ͷআ͠Α͏%PDLFSΠϝʔδҰཡΛදࣔ͢Δdocker images%PDLFSΠϝʔδΛআ͢Δdocker rmi/0123456789:;<=>?@
ΠϝʔδΛࣗͰ࡞ͬͯΈΑ͏
%PDLFSGJMFͷॻ͖ํFROM nginx:latestCOPY ./index.html /usr/share/nginx/html/index.htmlඞͣϑΝΠϧ໊%PDLFSGJMFͱ͢Δ%PDLFS͕Ϗϧυ༻ϑΝΠϧΛ໊લͰผ͢ΔͨΊ%PDLFSGJMFͰ͑ΔίϚϯυA+*B%&C#D%EFGHI914JKLMNOPH195QR
• FROM ϕʔεͱͳΔΠϝʔδΛࢦఆ͢Δ• RUN Ϗϧυ࣌ʹίϯςφͰίϚϯυΛ࣮ߦ͢Δ• ENV ,FZ7BMVFܗࣜͰڥมΛࢦఆ͢Δ• ADD, COPY ΠϝʔδϑΝΠϧΛίϐʔ͢Δˠ<ϦϯΫ>"%%ͱ$01:جຊ$01:Λ͏• CMD, ENTRYPOINT ίϯςφىಈ࣌ʹ࣮ߦ͢ΔίϚϯυҾΛ͋ࢦఆ͢Δˠ<ϦϯΫ>$.%ͱ&/53:10*/5ͷΈ߹Θͤجຊతͳ%PDLFSGJMFͷίϚϯυ
• LABEL• EXPOSE• VOLUME• USER• WORKDIR• ARG• ONBUILD• STOPSIGNAL• HEALTHCHECK• SHELLͦͷଞͷ%PDLFSGJMFͷίϚϯυSTNUVWXYZ[Z>@
Α͘͏ίϯςφͷૢ࡞ίϯςφΛҰཡදࣔ͢Δdocker ps࣮ߦதఀࢭதίϯςφΛఀࢭ͢Δdocker stopίϯςφΛىಈ͢Δdocker start࣮ߦதͷίϯςφͰίϚϯυΛ࣮ߦ͢Δdocker execίϯςφ࣮ߦதͷίϯςφͷϩάΛग़ྗ͢Δdocker logsίϯςφΛআ͢Δdocker rmରఀࢭதͷίϯςφɻಈ͍͍ͯΔͷΛࢭΊΔ࣌GΦϓγϣϯΛ͚ͭΔͪΐͬͱ͓ͨ͠ࢼ͠ௐࠪʹ͏͜ͱ͕ଟ͍ର࣮ߦதͷίϯςφɻࢭ·͍ͬͯΔͷݟΔ࣌BΦϓγϣϯΛ͚ͭΔ
ΞϓϦέʔγϣϯͷίϯςφԽ• ݴޠϑϨʔϜϫʔΫʹΑͬͯΓํͦΕͧΕ͕ͩɺࢿྉͨ͘͞Μ͋ΔͷͰ ࠷ۙެࣜυΩϡϝϯτ๛ࢀߟʹ࣮ͯ͠ݱͰ͖Δ• جຊతʹ࣍ͷ͍ͣΕ͔ͷํͰ%PDLFSGJMFΛॻ͍͍ͯ͘• ιʔείʔυΛίϯςφʹίϐʔ͠ɺΠϝʔδͷϏϧυ࣌ʹΞϓϦέʔγϣϯϏϧυ͢Δ• Ϗϧυͨ͠ΞϓϦέʔγϣϯͷ࣮ߦϑΝΠϧΛίϯςφʹίϐʔ͢Δ
αϯϓϧΞϓϦέʔγϣϯ࣮ߦϑΝΠϧιʔείʔυ\]2N0^_`[a18N8b0NW@Ϗϧυ͢ΔHSBEMFX CPPU+BS ࣮ߦ͢ΔKBWBKBSBQQIBOETPOKBS˞αϯϓϧͷίϯςφͰKBWB KBSBQQKBS
αϯϓϧΞϓϦέʔγϣϯ࣮ߦϑΝΠϧΞϓϦ༻ίϯςφᶃίϐʔᶄίϯςφͰ࣮ߦ%#༻ίϯςφᶅσʔλ$36%ࠓճऔಘͷΈಉ͡ωοτϫʔΫͰίϯςφΛσΟεΧόϦͰ͖ΔΑ͏ʹ͢Δ
%PDLFSΠϝʔδ࡞ͬͨΒͪΌΜͱཧ͠Α͏ʂ
ϩʔΧϧϦϙδτϦʹอ• ࡞ͨ͠ΠϝʔδʮόΠφϦɾϦϙδτϦϚωʔδϟʔʯʹอ͠ɺ͔ͦ͜ΒγΣΞ࠶ར༻Λ͢Δ• ಉ͡%PDLFSGJMFΛԿϏϧυ͢ΔͷΛආ͚࣌ؒΛઅͰ͖Δ• ࣭͕୲อ͞ΕͨΠϝʔδΛ͍ճͤΔऔಘ͢Δอ͢Δ%PDLFSΠϝʔδΛΞοϓϩʔυ͢Δdocker push
ϦϞʔτϦϙδτϦΛհͯ͠औಘ• औಘͨ͠ΠϝʔδʮόΠφϦɾϦϙδτϦϚωʔδϟʔʯʹอ͓ͯ͘͠• ΩϟογϡͷׂΛՌͨ͢• ߴʹऔಘͰ͖Δ• ֎෦ϦϙδτϦʹΞΫηεͰ͖ͳͯ͘औಘͰ͖Δऔಘͭͭ͠อ͢Δ
όʔνϟϧϦϙδτϦ• ϩʔΧϧϦϙδτϦɾόʔνϟϧϦϙδτϦΛଋͶΔ• อऔಘόʔνϟϧϦϙδτϦʹରͯ͠ૢ࡞͢Εྑ͍ϩʔΧϧϦϞʔτόʔνϟϧcef=ge2hij_klm[n
%PDLFS)VCͷΞΫηεճ੍ݶʹҙ• ແྉϢʔβʔΠϝʔδͷऔಘճʹ্ݶ͕͋Δ• ະೝূͷ߹ɺ࣌ؒͰϦΫΤετ·Ͱ• ແྉϢʔβʔͱͯ͠ೝূࡁΈͷ߹ɺ࣌ؒͰϦΫΤετ·Ͱ
%PDLFS)VCͷΞΫηεճ੍ݶʹҙ• ແྉϢʔβʔΠϝʔδͷऔಘճʹ্ݶ͕͋Δ• ະೝূͷ߹ɺ࣌ؒͰϦΫΤετ·Ͱ• ແྉϢʔβʔͱͯ͠ೝূࡁΈͷ߹ɺ࣌ؒͰϦΫΤετ·Ͱ• ՝ۚ·ͨ+'SPH"SUJGBDUPSZ Ϋϥυ൛Λܦ༝͢Εɺ੍ݶ͔Βղ์͞ΕΔʂopWQIm`qrsWQI9
%PDLFS$PNQPTF• ෳͷίϯςφΛఆٛɾ࣮ߦ͢ΔͨΊͷπʔϧίϚϯυͰ·ͱΊͯىಈɾఀࢭͰ͖Δ• :".- EPDLFSDPNQPTFZNMͰઃఆΛॻ͖ίϯςφΛཧ͢Δ• %PDLFSGJMFͱΈ߹ΘͤͯϏϧυΛߦ͏͜ͱɺΠϝʔδ͚ͩར༻͢Δ͜ͱͰ͖Δ• %PDLFSGJMFʹهࡌͨ͠ઃఆΛ্ॻ͖͢Δ͜ͱͰ͖Δ• ઃఆϑΝΠϧ্ͷίϯςφ͕ࢀՃ͢ΔωοτϫʔΫΛઃఆ͢Δ
͖ͬͬͨ͜͞ͱ ͓͞Β͍࣮ߦϑΝΠϧΞϓϦ༻ίϯςφᶃίϐʔᶄίϯςφͰ࣮ߦ%#༻ίϯςφᶅσʔλ$36%ࠓճऔಘͷΈಉ͡ωοτϫʔΫͰίϯςφΛσΟεΧόϦͰ͖ΔΑ͏ʹ͢Δ
ࠓ͔ΒΔ͜ͱ̍ΞϓϦ༻ίϯςφ%#༻ίϯςφᶅσʔλ$36%ࠓճऔಘͷΈᶄίϚϯυͰॱ൪ʹىಈ͢ΔಉҰωοτϫʔΫͱͳΔᶃΠϝʔδऔಘ
ࠓ͔ΒΔ͜ͱ̎ΞϓϦ༻ίϯςφ%#༻ίϯςφᶅσʔλ$36%ࠓճऔಘͷΈᶄίϚϯυͰॱ൪ʹىಈ͢ΔಉҰωοτϫʔΫͱͳΔᶃΠϝʔδऔಘEJSEJSϚϯτ࣮ߦϑΝΠϧ
ิใ
%PDLFS%FTLUPQ͕༗ྉԽʁ• %PDLFSGPS.BD8JOEPXT͕ର• ·ͰΓସ͑ͷ༛༧͋Γ• ݄υϧʮ1SPʯ υϧʮ5FBNʯ υϧʮ#VTJOFTTʯͷϓϥϯ• ໊ະຬ͔ͭച্ສυϧະຬͷ৫ɺݸਓར༻ɺ044ϓϩδΣΫτແྉͷ··