Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Docker ϋϯζΦϯ جૅฤ2 # גࣜձࣾΤΞʔΫϩʔθοτ ࣾษڧձ Vol.2 @takasp 20188݄24
Slide 2
Slide 2 text
͢͜ͱ • Dockerfile ͷॻ͖ํ • docker-compose ͷॻ͖ํ • Dockerfile ͱ docker-compose Λ ͬͨϋϯζΦϯ
Slide 3
Slide 3 text
Docker ͷ֓ཁίϚϯυ લճࢿྉΛࢀর͍ͯͩ͘͠͞ https://speakerdeck.com/takasp/docker-handson-basic-1
Slide 4
Slide 4 text
Dockerfile
Slide 5
Slide 5 text
Dockerfile ͱ • ϕʔεͱͳΔΠϝʔδɺίϯςφͰߦ͏ૢ࡞ɺ ڥมͳͲͷઃఆɺίϯςφͰಈ࡞͢Δ ϓϩηεΛؚΜͩߏใΛఆٛ͢ΔϑΝΠϧɻ • docker image build ίϚϯυͰ Dockerfile ΛݩʹΠϝʔδΛ࡞͢Δɻ
Slide 6
Slide 6 text
Dockerfile ͷ࡞ • FROM ໋ྩ • λά໊Λলུ͢Δͱ latest ͕༻͞ΕΔɻ • ࣮ࡍʹར༻͢Δ࣌ɺͲͷΑ͏ͳόʔδϣϯ͕ ಈ࡞͍ͯ͠Δ͔அͰ͖ͳ͍ͷͰɺlatest ༻͠ͳ͍ɻ '30.Πϝʔδ໊<λά໊> ϕʔεΠϝʔδྫ '30.VCVOUV
Slide 7
Slide 7 text
Dockerfile Λ࡞ͯ͠ Ϗϧυͯ͠ΈΑ͏
Slide 8
Slide 8 text
Dockerfile Λ࡞͠Α͏ • ҙͷσΟϨΫτϦΛ࡞͠ɺ σΟϨΫτϦʹೖΓ·͢ɻ • ҎԼͷΑ͏ͳ Dockerfile Λ࡞͠·͢ɻ NLEJSEPDLFSTBNQMF DEEPDLFSTBNQMF
Slide 9
Slide 9 text
Dockerfile ΛϏϧυͯ͠ΈΑ͏ • sample:1.0 ͱ͍͏໊લͰࠓͷσΟϨΫτϦʹ ͋Δ Dockerfile ΛϏϧυ͠·͢ɻ • docker image ls ίϚϯυͰ֬ೝ͢Δͱ ϕʔεΠϝʔδͷ ubuntu:18.04 ͱ sample:1.0 ͷ Πϝʔδ͕Ͱ͖͍ͯΔ͜ͱ͕͔Δɻ EPDLFSJNBHFCVJMEUTBNQMF
Slide 10
Slide 10 text
Ϗϧυ
Slide 11
Slide 11 text
Dockerfile ͔ΒΠϝʔδ࡞ • docker image build ίϚϯυ • ҎԼͷΑ͏ͳ DockerfileΛ࡞ͯ͠Ϗϧυ͢Δɻ EPDLFSJNBHFCVJMEUΠϝʔδ໊<λά໊><%PDLFSpMFͷॴ> ϕʔεΠϝʔδͷઃఆ '30.VCVOUV
Slide 12
Slide 12 text
Dockerfile ͔ΒΠϝʔδ࡞ • /home/user/sample ʹ͋Δ Dockerfile Λ sample:1.0 ͱ͍͏໊લͰϏϧυ͢Δྫɻ EPDLFSJNBHFCVJMEίϚϯυͷ࣮ߦྫ EPDLFSJNBHFCVJMEUTBNQMFIPNFVTFSTBNQMF
Slide 13
Slide 13 text
ΠϝʔδͷϨΠϠʔߏ • Dockerfile ͷΠϝʔδΛ࡞͢Δͱɺ ໋ྩ͝ͱʹΠϝʔδΛ࡞͢Δɻ • ࡞͞ΕͨෳͷΠϝʔδϨΠϠʔߏʹͳΔɻ • ࡞ͨ͠ΠϝʔδଞͷΠϝʔδͱڞ༗͢Δɻ ΠϝʔδΛੵΈॏͶͯσΟεΫޮΛߴΊ͍ͯΔɻ
Slide 14
Slide 14 text
ΠϝʔδͷϨΠϠʔߏྫ • ҎԼͷΑ͏ͳ Dockerfile Λ࡞ͯ͠ ΠϝʔδΛ࡞ͨ͠߹ɻ
Slide 15
Slide 15 text
• ҎԼͷίϚϯυͰϏϧυ͢Δͱ໋ྩ͝ͱʹ Πϝʔδ͕ੜ͞Ε͍ͯΔ͜ͱ͕͔Δɻ EPDLFSJNBHFCVJMEUXFC ˡ ˡ ˡ ˡ
Slide 16
Slide 16 text
• ໋ྩ͝ͱʹΠϝʔδ͕ੵΈॏͳΔɻ 4UFQ '30.໋ྩ 4UFQ '30.໋ྩ 4UFQ 36/໋ྩ 4UFQ '30.໋ྩ 4UFQ 36/໋ྩ 4UFQ $01:໋ྩ 4UFQ $.%໋ྩ 4UFQ '30.໋ྩ 4UFQ 36/໋ྩ 4UFQ $01:໋ྩ
Slide 17
Slide 17 text
ίϚϯυɾϓϩηεͷ࣮ߦ
Slide 18
Slide 18 text
RUN ໋ྩ • ϕʔεΠϝʔδʹϛυϧΣΞͷΠϯετʔϧ ઃఆɺڥߏஙͷίϚϯυΛ࣮ߦ͢ΔͳͲɺ ΞϓϦΛ͏ͷʹඞཁͳίϚϯυΛ࣮ߦ͢Δ ͱ͖ʹ༻͢Δɻ 36/໋ྩΛར༻ͨ͠OHJOYͷΠϯετʔϧྫ 36/BQUHFUJOTUBMMZOHJOY
Slide 19
Slide 19 text
CMD ໋ྩ • ࡞ͨ͠ΠϝʔδΛىಈ͢Δ࣌ʹ࣮ߦ͍ͨ͠ ίϚϯυΛ࣮ߦ͢Δͱ͖ʹ༻͢Δɻ • Ұ͚ͭͩఆٛͰ͖Δɻෳࢦఆͨ͠߹ɺ ࠷ޙͷ CMD ͕༗ޮʹͳΔɻ • docker container run ίϚϯυ࣮ߦ࣌ʹ ҾΛ͞Βʹࢦఆ͢ΔͱҾ͕༏ઌ͞ΕΔɻ
Slide 20
Slide 20 text
CMD ໋ྩͷهड़ํࣜ • Exec ܗࣜ • Shell ܗࣜ • ENTRYPOINT ໋ྩͷύϥϝʔλʔͱͯ͠
Slide 21
Slide 21 text
CMD ໋ྩͷ Exec ܗࣜ • γΣϧΛհ࣮ͣ͞ߦ͢Δɻ ͕ͨͬͯ͠ $HOME ͷΑ͏ͳڥมΛࢦఆͰ͖ͳ͍ɻ • JSON ྻͰࢦఆ͢Δɻ • ผͷγΣϧΛ͍͍ͨͱ͖ɺγΣϧͷύεΛࢦఆͯ͠ɺ ࣮ߦ͍ͨ͠ίϚϯυΛࢦఆ͢Δɻ • ެࣜͰ CMD ໋ྩ Exec ܗ͕ࣜ·͍͠ͱ͞Ε͍ͯΔɻ
Slide 22
Slide 22 text
CMD ໋ྩͷ Exec ܗࣜ OHJOYͷ$.%໋ྩͷ&YFDܗࣜͷྫ $.%<OHJOY H EBFNPOP⒎> &YFDܗࣜͰผͷγΣϧΛ࣮ߦ͢Δྫ $.%<CJOCBTI D OHJOY H EBFNPOP⒎>
Slide 23
Slide 23 text
CMD ໋ྩͷ Shell ܗࣜ • /bin/sh -c ΛͬͯίϚϯυΛ࣮ߦͨ͠ͱ͖ͱ ಉ͡ڍಈʹͳΔɻ • σϑΥϧτͷγΣϧΛมߋ͍ͨ͠ͱ͖ɺ SHELL ໋ྩΛ͏ɻ OHJOYͷ$.%໋ྩͷ4IFMMܗࣜͷྫ $.%OHJOYH`EBFNPOP⒎`
Slide 24
Slide 24 text
ENTRYPOINT ໋ྩ • ENTRYPOINT ໋ྩඞ࣮ͣߦ͞ΕΔ͕ɺ ࣮ߦ࣌ʹίϚϯυҾΛࢦఆ͍ͨ͠ͱ͖ʹ CMD ໋ྩͱΈ߹Θͤͯ༻͢Δɻ • ENTRYPOINT ໋ྩͰ࣮ߦ͍ͨ͠ίϚϯυɺ CMD ໋ྩͰσϑΥϧτͷҾΛఆ͓͖ٛͯ͠ɺ docker container run ίϚϯυͰڍಈΛม͍͑ͨ߹ʹར༻͢Δɻ • Ұ͚ͭͩఆٛͰ͖Δɻ ෳࢦఆͨ͠߹ɺ࠷ޙͷ ENTRYPOINT ͕༗ޮʹͳΔɻ
Slide 25
Slide 25 text
ENTRYPOINT ໋ྩ • ENTRYPOINT ໋ྩͱ CMD ໋ྩΛ Έ߹Θͤͯ Dockerfile Λ࡞ͨ͠ྫɻ
Slide 26
Slide 26 text
ENTRYPOINT ໋ྩ QJOHίϚϯυΛճXXXHPPHMFDPNʹ࣮ߦ͢Δ߹ EPDLFSDPOUBJOFSSVOTBNQMF QJOHίϚϯυΛճXXXZBIPPDPNʹ࣮ߦ͢Δ߹ EPDLFSDPOUBJOFSSVOTBNQMFXXXZBIPPDPN
Slide 27
Slide 27 text
ڥɾωοτϫʔΫͷઃఆ
Slide 28
Slide 28 text
ENV ໋ྩ • ڥมΛઃఆ͍ͨ͠ͱ͖ʹ ENV ໋ྩΛ ༻͢Δɻ &/7໋ྩͷྫ &/7)045IPTU &/7/".&EPDLFSNPCZ &/7500-,VCFSOFUFT"QBDIF.FTPT%PDLFS4XBSN &/71035QPSU &/7 PS &/7
Slide 29
Slide 29 text
WORKDIR ໋ྩ • ࡞ۀ༻σΟϨΫτϦΛࢦఆ͢Δɻ • ͠ࢦఆͨ͠σΟϨΫτϦ͕ଘࡏ͠ͳ͚Ε࡞͢Δɻ • cd ίϚϯυ༻͠ͳ͍ɻ 803,%*3໋ྩͷྫ 803,%*3pSTU 803,%*3TFDPOE 803,%*3<࡞ۀσΟϨΫτϦͷύε>
Slide 30
Slide 30 text
USER ໋ྩ • RUN ໋ྩ CMD ໋ྩΛ࣮ߦ͢ΔϢʔβʔΛࢦఆ͢Δɻ • USER ໋ྩͰࢦఆ͢ΔϢʔβʔ͋Β͔͡Ί RUN ໋ྩͰ ࡞͞Ε͍ͯΔඞཁ͕͋Δɻ • ϕʔεΠϝʔδͷσϑΥϧτ root ϢʔβʔͰ͋Δ͜ͱ͕ଟ͘ɺ ϓϩηεͷ࣮ߦʹ root ݖݶ͕ඞཁͰͳ͍߹ɺ USER ΛΓସ͑ͨํ͕ྑ͍ɻ 64&3<Ϣʔβʔ໊6*%>
Slide 31
Slide 31 text
EXPOSE ໋ྩ • ެ։͢Δϙʔτ൪߸Λࢦఆ͢Δͱ͖ʹ ༻͢Δɻ • ίϯςφ͕ listen ͢ΔϙʔτΛΒͤΔɻ &9104&໋ྩͷྫ &9104& &9104&<ϙʔτ൪߸>
Slide 32
Slide 32 text
ϑΝΠϧͷઃఆ
Slide 33
Slide 33 text
ADD ໋ྩ • ϗετ্ͷϑΝΠϧσΟϨΫτϦΛՃ͢Δ ͱ͖ʹ༻͢Δɻ • tar.gz ͳͲͷѹॖϑΝΠϧΛల։͢Δػೳ࣋ͭɻ "%%<ϗετ04ͷϑΝΠϧύε><ΠϝʔδͷϑΝΠϧύε> "%%໋ྩͷྫ "%%JOEFYIUNMEJS
Slide 34
Slide 34 text
COPY ໋ྩ • ADD ໋ྩͱࣅ͍ͯΔ͕ɺCOPY ໋ྩ ίϐʔ͢Δػೳ͚ͩ࣋ͭɻ • ίϐʔ͢Δॲཧ͚͕ͩ໌ࣔతͰ͋Δͱ͖ʹ ༻͢Δɻ $01:<ϗετ04ͷϑΝΠϧύε><ΠϝʔδͷϑΝΠϧύε>
Slide 35
Slide 35 text
VOLUME ໋ྩ • ϘϦϡʔϜΛׂΓͯΔͱ͖ʹ༻͢Δɻ • ࢦఆ໊ͨ͠લͷϚϯτϙΠϯτΛ࡞͠ɺ ϗετ OS ͦͷଞͷίϯςφ͔Β֎෦ʹ Ϛϯτ͢Δɻ 70-6.&<ϚϯτϙΠϯτ>
Slide 36
Slide 36 text
Dockerfile ͷ ϕετϓϥΫςΟεΛҰ෦հ
Slide 37
Slide 37 text
ϨΠϠʔΛ࠷খݶʹอͭ • RUNɺADDɺCOPY ໋ྩϨΠϠʔΛ࡞͠ɺ ϏϧυͷαΠζΛ૿͢ͷͰ ՄೳͳݶΓҰͭʹ·ͱΊΔΑ͏ʹ͢Δɻ • v17.05 ͔ΒϚϧνεςʔδϏϧυʹ ରԠ͍ͯ͠ΔͷͰɺར༻Λݕ౼͢Δɻ
Slide 38
Slide 38 text
RUN ໋ྩ·ͱΊΔ • ϨΠϠʔΛ૿͞ͳ͍ͨΊʹ RUN ໋ྩΛ·ͱΊΔɻ • ෳͷҾΛӳࣈͰฒସ͑Δͱྑ͍ɻ • վߦ \ ΛೖΕΔͱՄಡੑ͕ߴ͘ɺอक͍͢͠ɻ 36/໋ྩΛ·ͱΊͨྫ 36/BQUHFUVQEBUFBQUHFUJOTUBMMZa C[Sa DWTa HJUa NFSDVSJBMa TVCWFSTJPO
Slide 39
Slide 39 text
ϏϧυΩϟογϡΛ༗ޮ׆༻͢Δ • ΠϝʔδΛϏϧυ͢Δࡍʹ࠶ར༻Ͱ͖ΔΠϝʔδͷΩϟογϡ͕ଘࡏ͢Δ͔ ֬ೝ͢Δɻ • جຊϧʔϧ • Πϝʔδ͔Βੜͨ͠ࢠΠϝʔδͱൺֱ͠ɺಉ໋͡ྩɺίϚϯυ͕ ༻͞Ε͍ͯΔ͔ൺֱ͢Δɻ • ADD ͱ COPY ໋ྩɺϑΝΠϧ͝ͱʹνΣοΫαϜ͕ܭࢉ͞Εɺ ΩϟογϡͷνΣοΫαϜΛൺֱ͢Δɻ • ίϯςφͷϑΝΠϧΛνΣοΫ͠ͳ͍ͷͰɺ ྫ͑ɺRUN apt-get -y update ίϚϯυͷΈ͕࣮ߦ͞Εͨ߹ɺ ίϚϯυจࣈྻࣗମΛൺֱ͢ΔͷͰɺΩϟογϡΛར༻ͯ͠͠·͏ɻ
Slide 40
Slide 40 text
ϏϧυΩϟογϡͷ༗ޮ׆༻ྫ • ѱ͍ྫɺҰͭͰϩʔΧϧͷϑΝΠϧʹมߋ͕͋Δ࣌Ͱɺ ιʔεͷίϐʔʢCOPY ໋ྩʣͱ npm installʢRUN ໋ྩʣ͕࣮ߦ͞ΕΔɻ • ྑ͍ྫɺpackage.json ΛઌʹίϐʔʢCOPY ໋ྩʣͯ͠ npm install ʢRUN ໋ྩʣΛ͢Δ͜ͱͰɺpackage.json ʹมߋ͕ͳ͍ݶΓɺ npm installʢRUN ໋ྩʣͷ࠶࣮ߦͤͣɺιʔεͷίϐʔʢCOPY ໋ྩʣͷΈ ࣮ߦ͢Δɻ ྑ͍%PDLFSpMFͷྫ '30.OPEF 803,%*3TSD $01:QBDLBHFKTPOTSDQBDLBHFKTPO 36/OQNJOTUBMM $01:TSD ѱ͍%PDLFSpMFͷྫ '30.OPEF 803,%*3TSD $01:TSD 36/OQNJOTUBMM
Slide 41
Slide 41 text
FROM ໋ྩ • ެࣜϦϙδτϦΛϕʔεΠϝʔδͱͯ͠༻͢Δɻ • alpine ͳͲখ͍͞Πϝʔδͷ༻Λݕ౼͢Δɻ • ubuntu:latest ͱ alpine:latest ͷൺֱɻ
Slide 42
Slide 42 text
ͦͷଞ • RUN ໋ྩ࣮ߦ࣌ͷ࠷ॳʹ set -eux Λ༩͢Δɻ • -e Τϥʔ࣌ʹଈ࠲ʹऴྃ͠ɺ࣮ߦ༰͕දࣔ͞ΕΔɻ • -x ࣮ߦͨ͠ίϚϯυΛඪ४ग़ྗʹදࣔ͢Δɻ • -u ະఆٛͷม͕ࢀর͞Εͨͱ͖ʹऴྃ͢Δɻ • ෆඞཁͳύοέʔδΠϯετʔϧ͠ͳ͍ɻ • ෳࡶ͞ɺґଘؔɺϑΝΠϧαΠζɺϏϧυ࣌ؒΛݮΒͨ͢Ίɻ • .dockerignore ϑΝΠϧΛར༻͢Δɻ • Ϗϧυ࣌ʹෆඞཁͳϑΝΠϧΛআ֎͢Δɻ
Slide 43
Slide 43 text
Dockerfile ϋϯζΦϯ
Slide 44
Slide 44 text
Node.js Ͱ Dockerfile Λ ࡞͠Α͏
Slide 45
Slide 45 text
package.json Λ࡞͢Δ • ҙͷσΟϨΫτϦΛ࡞͠ɺσΟϨΫτϦʹ ೖΓ·͢ɻ • σΟϨΫτϦͰӈهͷ package.jsonΛ࡞͠·͢ɻ NLEJSOPEFKTEPDLFS DEOPEFKTEPDLFS \ OBNFEPDLFSOPEFKTIFMMP WFSTJPO EFTDSJQUJPO BVUIPS MJDFOTF*4$ EFQFOEFODJFT\ FYQSFTT ^ ^
Slide 46
Slide 46 text
index.js Λ࡞͢Δ • ӈهͷ index.js Λ ࡞͠·͢ɻ VTFTUSJDU DPOTUFYQSFTTSFRVJSF FYQSFTT $POTUBOUT DPOTU1035 DPOTU)045 "QQ DPOTUBQQFYQSFTT BQQHFU SFR SFT \ SFTTFOE )FMMPXPSMEaO ^ BQQMJTUFO 1035 )045 DPOTPMFMPH A3VOOJOHPOIUUQ\)045^\1035^A
Slide 47
Slide 47 text
Dockerfile Λ࡞͢Δ • ӈهͷ Dockerfile Λ ࡞͠·͢ɻ '30.VCVOUV 803,%*3TSD /PEFKTͱOQNΛΠϯετʔϧ 36/BQUHFUVQEBUFBQUHFUJOTUBMMZa OPEFKTa OQN OQNJOTUBMM $01:QBDLBHFKTPOTSDQBDLBHFKTPO 36/OQNJOTUBMMQSPEVDUJPO ιʔεΛίϐʔ $01:TSD &9104& $.%<OPEF TSDJOEFYKT>
Slide 48
Slide 48 text
Ϗϧυ͢Δ • docker image build ίϚϯυͰ Ϗϧυ͠·͢ɻ • docker container run ίϚϯυͰىಈ͠·͢ɻ EPDLFSJNBHFCVJMEUVCVOUVOPEFIFMMP EPDLFSDPOUBJOFSSVOOBNFOPEFIFMMPa QEVCVOUVOPEFIFMMP
Slide 49
Slide 49 text
ϒϥβͰ֬ೝ͢Δ • ϒϥβ͔Β http://localhost:49160/ ʹ ΞΫηεͯ͠τοϓը໘͕දࣔ͞ΕͨΒ ಈ࡞֬ೝྃͰ͢ɻ
Slide 50
Slide 50 text
index.js Λमਖ਼͢Δ • index.js ͷ Hello world Λ Hello docker ʹ ॻ͖͑·͢ɻ "QQ DPOTUBQQFYQSFTT BQQHFU SFR SFT \ SFTTFOE )FMMPEPDLFSaO XPSMEΛEPDLFSʹॻ͖͑Δɻ ^
Slide 51
Slide 51 text
࠶Ϗϧυ͢Δ • docker image build ίϚϯυͰ࠶Ϗϧυ͠·͢ɻ • ࠶Ϗϧυ͢Δͱมߋ͕ͳ͍෦Ωϟογϡ͕ར༻͞Εɺ มߋ͞Ε͍ͯΔ෦ΠϝʔδΛ࡞Γ͍ͯ͠Δɻ EPDLFSJNBHFCVJMEUVCVOUVOPEFIFMMP ˡΩϟογϡ࠶ར༻ ˡΩϟογϡ࠶ར༻ ˡΠϝʔδ࠶࡞
Slide 52
Slide 52 text
ίϯςφΛ৽͘͠ىಈ͢Δ • ҎલͷίϯςφΛఀࢭɺআ͠·͢ɻ • ৽͍͠ΠϝʔδͰίϯςφΛىಈ͠·͢ɻ EPDLFSDPOUBJOFSSVOOBNFOPEFIFMMPa QEVCVOUVOPEFIFMMP EPDLFSDPOUBJOFSTUPQOPEFIFMMP EPDLFSDPOUBJOFSSNOPEFIFMMP
Slide 53
Slide 53 text
ϒϥβͰ֬ೝ͢Δ • ϒϥβ͔Β http://localhost:49160/ ʹ ΞΫηεͯ͠τοϓը໘͕දࣔ͞ΕͨΒ ಈ࡞֬ೝྃͰ͢ɻ
Slide 54
Slide 54 text
docker-compose
Slide 55
Slide 55 text
docker-compose ͱ • ෳͷίϯςφΛ·ͱΊͯཧ͢Δπʔϧɻ • ϑΝΠϧʹίϯςφͷߏใΛఆٛ͢Δͱɺ ಉҰͷϗετ্ͰෳͷίϯςφΛཧͰ͖Δɻ • docker ίϚϯυͰ༻͍ͯͨ͠ΦϓγϣϯΛ ϑΝΠϧʹهड़͢Δɻ
Slide 56
Slide 56 text
docker-compose ϑΝΠϧͷ֓ཁ • YAML ܗࣜͰཧ͢Δɻ • ҎԼΛఆٛ͢Δɻ • αʔϏεʢservicesʣ • ωοτϫʔΫʢnetworksʣ • ϘϦϡʔϜʢvolumesʣ • ϑΝΠϧͷઌ಄ʹ version Λࢦఆ͢Δɻ
Slide 57
Slide 57 text
docker-compose ϑΝΠϧͷ֓ཁ όʔδϣϯΛࢦఆ WFSTJPO αʔϏεΛఆٛ TFSWJDFT XFC CVJME QPSUT OFUXPSLT XFC dӈʹଓ͘d dࠨͷଓ͖d EC JNBHFQPTUHSFT WPMVNFT ECEBUBWBSMJCQPTUHSFTRMEBUB OFUXPSLT XFC ωοτϫʔΫΛఆٛ OFUXPSLT XFC ϘϦϡʔϜΛఆٛ WPMVNFT ECEBUB
Slide 58
Slide 58 text
Πϝʔδͷࢦఆʢimageʣ • ϕʔεΠϝʔδΛࢦఆ͢Δͱ͖ image Λ ༻͢Δɻ • λά໊Λলུ͢Δͱ latest ͕༻͞ΕΔ • ࣮ࡍʹར༻͢Δ࣌ɺͲͷΑ͏ͳόʔδϣϯ͕ ಈ࡞͍ͯ͠Δ͔அͰ͖ͳ͍ͷͰɺ latest ༻͠ͳ͍ɻ
Slide 59
Slide 59 text
Ϗϧυʢbuildʣ • ϩʔΧϧʹ Dockerfile Λ࡞ͯ͠ɺ ͦΕΛϕʔεΠϝʔδʹࢦఆ͢Δͱ͖ build Λ༻͢Δɻ EPDLFSDPNQPTFZNM͕ଘࡏ͢ΔσΟϨΫτϦʹ %PDLFSpMF͕ଘࡏ͢Δ߹ TFSWJDFT XFC CVJME
Slide 60
Slide 60 text
ίϚϯυͷࢦఆʢcommandʣ • ίϯςφͰಈ͔͢ίϚϯυɺcommand Ͱ ࢦఆ͢Δɻ DPNNBOEʹCJOCBTIΛࢦఆ͢Δྫ DPNNBOECJOCBTI
Slide 61
Slide 61 text
ίϯςφؒ௨৴ʢportsɾexposeʣ • ίϯςφ͕ϗετ OS ʹϙʔτΛެ։͢Δ߹ portsɺ ࿈ܞ͢Δίϯςφʹ͚ͩϙʔτΛެ։͢Δ߹ expose Ͱࢦఆ͢Δɻ QPSUT <ϗετ04ͷϙʔτ൪߸ίϯςφͷϙʔτ൪߸> ࿈ܞ͢ΔίϯςφʹͷΈϙʔτΛެ։͢Δ߹ɺFYQPTFΛࢦఆ͢Δ FYQPTF <ίϯςφͷϙʔτ൪߸> QPSUTɾFYQPTFΛࢦఆ͢Δྫ QPSUT FYQPTF
Slide 62
Slide 62 text
ґଘؔͷఆٛʢdepends_onʣ • ෳͷίϯςφͷґଘؔΛఆٛ͢Δͱ͖ɺ depends_on Λࢦఆ͢Δɻ • depends_on ίϯςφͷ ։࢝ॱংΛఆٛ͢Δ͚ͩͰɺ ίϯςφͷΞϓϦ͕ىಈ͢Δ·Ͱ ੍ͭޚΛ͠ͳ͍ͷͰɺ ΞϓϦଆͰରԠ͢Δඞཁ͕͋Δɻ ECʹґଘͨ͠XFCίϯςφΛ ఆٛ͢Δྫ TFSWJDFT XFC CVJME EFQFOET@PO EC EC JNBHFQPTUHSFT
Slide 63
Slide 63 text
ڥมͷࢦఆʢenvironmentʣ • ίϯςφͷڥมΛࢦఆ͢Δͱ͖ɺ environment Λࢦఆ͢Δɻ • ϋογϡܗࣜ·ͨྻܗࣜͰࢦఆ͢Δɻ ϋογϡܗࣜ FOWJSPONFOU 3"$,@&/7EFWFMPQNFOU 4)08USVF ྻܗࣜ FOWJSPONFOU ɹ3"$,@&/7EFWFMPQNFOU ɹ4)08USVF
Slide 64
Slide 64 text
ڥมͷࢦఆʢenv_fileʣ • ϑΝΠϧʹڥมΛఆٛͯ͠ɺ ͦͷϑΝΠϧΛಡΈࠐΉ͜ͱͰ͖Δɻ ఆٛͨ͠FOWpMF 3"$,@&/7EFWFMPQNFOU 4)08USVF FOWpMFΛͷಡΈࠐΈ FOW@pMFFOWpMF ෳͷFOWpMFΛಡΈࠐΉ͜ͱͰ͖Δ FOW@pMF DPNNPOFOW BQQTXFCFOW
Slide 65
Slide 65 text
ίϯςφใʢcontainer_nameʣ • ίϯςφʹ໊લΛ͚ͭΔͱ͖ʹɺcontainer_name Λ ࢦఆ͢Δɻ • σϑΥϧτͩͱ{σΟϨΫτϦ໊}_{αʔϏε໊}_{࿈൪}Ͱ ੜ͞ΕΔɻ • ίϯςφ໊ҰҙͳͷͰɺෳͷίϯςφʹεέʔϧ Ͱ͖ͳ͘ͳΔɻ ίϯςφ໊Λࢦఆ͢Δྫ DPOUBJOFS@OBNFXFC
Slide 66
Slide 66 text
σʔλཧʢvolumesʣ • ίϯςφʹϘϦϡʔϜΛϚϯτ͢Δ࣌ volumes Λࢦఆ͢Δɻ WPMVNFT ϘϦϡʔϜΛ࡞͢Δྫ WBSMJCNZTRM ϗετ04ͰϚϯτύεΛࢦఆ͢Δྫ ϗετ04ͷσΟϨΫτϦύείϯςφͷσΟϨΫτϦύε DBDIFUNQDBDIF ಡΈऔΓઐ༻ͰϚϯτ͢Δྫ dDPOpHTFUDDPOpHTSP
Slide 67
Slide 67 text
ෳίϯςφͷӡ༻
Slide 68
Slide 68 text
ίϯςφͷੜʢupʣ • ෳίϯςφͷੜɾىಈΛߦ͏ͱ͖ docker-compose up ίϚϯυΛ༻͢Δɻ • Πϝʔδ͕ଘࡏ͠ͳ͍߹Ϗϧυ͕͞Ε͍ͯͳ͍߹ ىಈ࣌ʹߦ͏ɻ EόοΫάϥϯυͰ࣮ߦ͢Δɻ CVJME%PDLFSpMFΛϏϧυ͢Δɻ EPDLFSDPNQPTFVQ<Φϓγϣϯ><αʔϏε໊> όοΫάϥϯυͰىಈ͢Δྫ EPDLFSDPNQPTFVQE
Slide 69
Slide 69 text
ίϯςφͷ֬ೝʢpsʣ • ෳͷίϯςφͷҰཡΛදࣔ͢Δʹ docker-compose ps ίϚϯυΛ༻͢Δɻ • docker container ls ͰදࣔͰ͖Δɻ ෳͷίϯςφΛදࣔ͢Δྫ EPDLFSDPNQPTFQT EPDLFSDPNQPTFQT<Φϓγϣϯ><αʔϏε໊>
Slide 70
Slide 70 text
ίϯςφͷ֬ೝʢlogsʣ • docker-compose Ͱཧ͢ΔίϯςφͷϩάΛ ֬ೝ͢Δʹɺdocker-compose logs ίϚϯυΛ ༻͢Δɻ • αʔϏε໊Λࢦఆ͢ΕαʔϏε໊ͷίϯςφ͚ͩදࣔͰ͖Δɻ GGPMMPXϩάग़ྗΛଓ͚Δɻ UBJMϩάͷඌΛදࣔ͢Δɻ EPDLFSDPNQPTFMPHT<Φϓγϣϯ><αʔϏε໊> XFCαʔϏεͷίϯςφͷϩάΛදࣔ͢Δྫ EPDLFSDPNQPTFMPHTXFC
Slide 71
Slide 71 text
ίϚϯυ࣮ߦʢrunʣ • ҙͷίϚϯυΛ࣮ߦͯ͠ίϯςφΛىಈ͍ͨ͠ ͱ͖ʹ docker-compose run ίϚϯυΛ༻͢Δɻ EPDLFSDPNQPTFSVO<Φϓγϣϯ>αʔϏε໊<ίϚϯυ> EόοΫάϥϯυͰ࣮ߦ͢Δɻ XFCαʔϏεʹCBTIΛ࣮ߦͯ͠ىಈ͢Δྫ EPDLFSDPNQPTFSVOXFCCBTI
Slide 72
Slide 72 text
ίϚϯυ࣮ߦʢexecʣ • docker container exec ͱಉɻ ىಈ͍ͯ͠ΔίϯςφʹίϚϯυΛ࣮ߦ͢Δɻ EPDLFSDPNQPTFFYFD<Φϓγϣϯ>αʔϏε໊<ίϚϯυ> EόοΫάϥϯυͰ࣮ߦ͢Δɻ JOEFYJOEFYεέʔϧ͍ͯ͠Δ߹ʹࢦఆ͢ΔɻσϑΥϧτɻ XFCαʔϏεʹCBTIΛ࣮ߦͯ͠ىಈ͢Δྫ EPDLFSDPNQPTFFYFDXFCCBTI
Slide 73
Slide 73 text
ෳίϯςφͷىಈɺఀࢭɺ࠶ىಈ ʢstartɾstopɾrestartʣ • ͦΕͧΕɺෳͷίϯςφΛҰׅͰ ىಈɾఀࢭɺ࠶ىಈͰ͖Δɻ • ಛఆͷαʔϏε໊ΛҾʹ͢ͱ ͦͷίϯςφͷΈૢ࡞Ͱ͖Δɻ EPDLFSDPNQPTFTUBSUTUPQSFTUBSU<αʔϏε໊>
Slide 74
Slide 74 text
ෳίϯςφͷআʢrmʣ • ෳͷίϯςφΛআ͢Δͱ͖ɺ docker-compose rm ίϚϯυΛ༻͢Δɻ • ಛఆͷαʔϏε໊ΛҾʹ͢ͱͦͷίϯςφͷΈ আͰ͖Δɻ EPDLFSDPNQPTFSN<αʔϏε໊> GGPSDF֬ೝͤͣআ͢Δɻ XFCαʔϏεͷίϯςφΛআ͢Δྫ EPDLFSDPNQPTFSNXFC
Slide 75
Slide 75 text
ෳϦιʔεͷҰׅআʢdownʣ • docker-compose up Ͱੜͨ͠ίϯςφΠϝʔδͳͲͷ ϦιʔεΛ·ͱΊͯআ͢Δͱ͖ʹ docker-comopse down ίϚϯυΛ༻͢Δɻ • ࣮ߦதͷίϯςφΛఀࢭ͠ɺΠϝʔδɺωοτϫʔΫɺ ϘϦϡʔϜΛআ͢Δɻ EPDLFSDPNQPTFEPXO<Φϓγϣϯ> SNJBMMશͯͷΠϝʔδΛআ ΠϝʔδؚΊશͯΛআ͢Δྫ EPDLFSDPNQPTFEPXOSNJBMM
Slide 76
Slide 76 text
docker-compose ϋϯζΦϯ
Slide 77
Slide 77 text
Python ͷ DjangoϑϨʔϜϫʔΫͰ docker-compose Λ࡞͠Α͏
Slide 78
Slide 78 text
Dockerfile Λ࡞͢Δ • ҙͷσΟϨΫτϦΛ࡞͠ɺσΟϨΫτϦʹ ೖΓ·͢ɻ • σΟϨΫτϦͰ ӈهͷ Dockerfile Λ ࡞͠·͢ɻ NLEJSEKBOHPEPDLFSDPNQPTF DEEKBOHPEPDLFSDPNQPTF '30.QZUIPO &/71:5)0/6/#6''&3&% 803,%*3DPEF $01:SFRVJSFNFOUTUYUDPEF 36/QJQJOTUBMMSSFRVJSFNFOUTUYU $01:DPEF
Slide 79
Slide 79 text
requirements.txt Λ࡞͢Δ • ҎԼͷ requirements.txt Λ࡞͠·͢ɻ %KBOHP QTZDPQH
Slide 80
Slide 80 text
docker-compose.yml • Լهͷ docker-compose.yml Λ࡞͠·͢ɻ WFSTJPO TFSWJDFT EC JNBHFQPTUHSFT XFC CVJME DPNNBOEQZUIPONBOBHFQZSVOTFSWFS WPMVNFT DPEF QPSUT EFQFOET@PO EC
Slide 81
Slide 81 text
DjangoϓϩδΣΫτΛ࡞͢Δ • ҎԼͷ docker-compose run ίϚϯυͰ Django ϓϩδΣΫτΛ࡞͠·͢ɻ • ϑΝΠϧҰཡΛදࣔ͢Δͱ Django ϓϩδΣΫτ͕ ੜ͞Ε͍ͯΔ͜ͱ͕͔Δɻ EPDLFSDPNQPTFSVOXFCa EKBOHPBENJOQZTUBSUQSPKFDUDPNQPTFFYBNQMF MTM
Slide 82
Slide 82 text
σʔλϕʔεʹଓ͢Δ • composeexample/settings.py ϑΝΠϧͷ DATABASES ͷઃఆΛҎԼͷΑ͏ʹมߋ͠·͢ɻ %"5"#"4&4\ EFGBVMU\ &/(*/&EKBOHPECCBDLFOETQPTUHSFTRM /".&QPTUHSFT 64&3QPTUHSFT )045EC 1035 ^ ^
Slide 83
Slide 83 text
docker-compose Λىಈͯ͠ ϒϥβͰ֬ೝ͢Δ • docker-compose up ίϚϯυͰىಈ͠·͢ɻ • ϒϥβ͔Β http://localhost:8000/ ʹΞΫηεͯ͠ τοϓը໘͕දࣔ͞ΕͨΒಈ࡞֬ೝྃͰ͢ɻ EPDLFSDPNQPTFVQE
Slide 84
Slide 84 text
͍͞͝ʹ
Slide 85
Slide 85 text
Dockerfile Λॻ͘͜ͱͰ ඞཁͳϦιʔεΛఆٛͰ͖Δ
Slide 86
Slide 86 text
docker-compose Λ͑ ෳͷίϯςφΛѻ͑ɺ ίϚϯυγϯϓϧʹىಈͰ͖Δ
Slide 87
Slide 87 text
·ͱΊ
Slide 88
Slide 88 text
·ͱΊ • Dockerfile ͰඞཁͳϦιʔεΛఆٛͰ͖Δɻ • docker-compose ͰෳͷίϯςφΛ γϯϓϧͳίϚϯυͰѻ͑Δɻ • Dockerfile ͷ࡞ํ๏Λֶͼɺ ࡞ɺϏϧυͯ͠ಈ͔ͯ͠Έͨɻ • docker-compose ͷ࡞ํ๏Λֶͼɺ ࡞ɺϏϧυͯ͠ಈ͔ͯ͠Έͨɻ
Slide 89
Slide 89 text
جૅฤ2 ͓ΘΓ
Slide 90
Slide 90 text
Appendix
Slide 91
Slide 91 text
ࢀߟจݙ • ϓϩάϥϚͷͨΊͷDockerڭՊॻ ୈ2൛ Πϯϑϥͷجૅࣝ&ίʔυʹΑΔڥߏஙͷࣗಈԽ • ίϯςφɾϕʔεɾΦʔέετϨʔγϣϯ Docker/KubernetesͰ࡞ΔΫϥυ࣌ͷγεςϜج ൫ • https://docs.docker.com/ • https://qiita.com/pottava/items/452bf80e334bc1fee69a • https://qiita.com/dskshmz/items/c01f29f8398cc7f5c396 • https://qiita.com/yugui/items/517480f4383b893e092e • https://qiita.com/yugui/items/517480f4383b893e092e • https://nodejs.org/en/docs/guides/nodejs-docker-webapp/ • http://docs.docker.jp/engine/examples/nodejs_web_app.html