Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Docker ハンズオン 基礎編1 / Docker Handson Basic 1
Search
takasp
August 17, 2018
200
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Docker ハンズオン 基礎編1 / Docker Handson Basic 1
takasp
August 17, 2018
More Decks by takasp
See All by takasp
監視のための統計入門 / Introduction to Statistics for Monitoring
takasp
0
150
Google App Engineを始めよう / Getting Started with Google App Engine
takasp
0
69
Git中級者になるためのrebase入門 / Introduction to rebase to become an intermediate Git user
takasp
0
82
GitHubで始めるdotfiles管理 / Getting started with GitHub for dotfiles management
takasp
0
66
第三回 Datadog 共有会 / Datadog Sharing 3rd
takasp
0
120
第二回 Datadog 共有会 / Datadog Sharing 2nd
takasp
0
94
Datadog 共有会 / Datadog Sharing
takasp
1
75
Git ハンズオン Part 1 / Git Handson Part 1
takasp
0
82
Docker ハンズオン 基礎編2 / Docker Handson Basic 2
takasp
1
110
Featured
See All Featured
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
240
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
330
We Are The Robots
honzajavorek
0
250
Discover your Explorer Soul
emna__ayadi
2
1.1k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.5k
エンジニアに許された特別な時間の終わり
watany
107
250k
Designing for Timeless Needs
cassininazir
1
260
4 Signs Your Business is Dying
shpigford
187
22k
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
420
Java REST API Framework Comparison - PWX 2021
mraible
34
9.4k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Transcript
Docker ϋϯζΦϯ جૅฤ1 # גࣜձࣾΤΞʔΫϩʔθοτ ࣾษڧձ Vol.1 @takasp 20188݄17
͢͜ͱ • Docker ΛऔΓר͘എܠ • ίϯςφٕज़ͷ֓ཁ • Docker ͷίϚϯυ •
Docker ͷίϚϯυΛͬͨϋϯζΦϯ
Docker ΛऔΓר͘എܠ
ཧαʔόʔ͔ΒԾԽ • ཧαʔόʔ ωοτϫʔΫηΩϡϦςΟ͕҆ఆ͢ΔσʔληϯλʔͰͷ ӡ༻͕͕Δɻ ͔͠͠ɺϋʔυΣΞނোͷϦεΫௐୡίετ͕ඞཁɻ • Ծαʔόʔ ཧαʔόʔ্ʹෳͷԾαʔόʔ͕࣮ߦͰ͖Δ ϋΠύʔόΠβʔ͕ొɻ
ϦιʔεΛޮతʹѻ͑ɺOS Πϝʔδͷ࠶ར༻εϖοΫมߋ͕ ॊೈʹߦ͑ΔΑ͏ʹͳͬͨɻ
ԾԽ͔ΒΫϥυ • ࣭ͷߴ͍αʔϏεΛਝʹఏڙ͢ΔͨΊʹɺ ΠϯϑϥΛॊೈʹௐͰ͖ΔҰͭͷબࢶͱͯ͠ొͨ͠ɻ • Ϋϥυ - ར༻ऀࣗͰ͍ͭͰඞཁͳ͚ͩར༻Ͱ͖Δɻ - ωοτϫʔΫΛ௨ͯ͡ར༻Ͱ͖Δɻ
- Ϧιʔε͕நԽ͞Ε͍ͯͯɺͲ͜ʹϦιʔε͕࣮ࡏ͢Δͷ͔ ؾʹͤͣར༻Ͱ͖Δɻ - ҙͷλΠϛϯάͰεέʔϧͰ͖Δɻ
ΫϥυΞʔΩςΫνϟ • SaaS ϒϥβͳͲΛ௨ͯ͠ΞϓϦ͕ར༻Ͱ͖ɺϦιʔεΛҙࣝ͢Δඞཁ͕ͳ͍ɻ • FaaS ؔ୯ҐͷίʔυΛσϓϩΠ͢Δ͚ͩͰɺϋʔυΣΞ OS Λҙࣝ͢Δඞཁ͕ͳ͍ɻ ؔʹඞཁͳϦΫΤετͷΈ͕͞Εɺ࣮ߦͨ݁͠Ռ͕Ϩεϙϯε͞ΕΔɻ
• PaaS Ϋϥυࣄۀऀ͕༻ҙͨ͠ɺݴޠɾϥΠϒϥϦɾπʔϧΛར༻ͯ͠։ൃ͕Ͱ͖ɺ σϓϩΠ࣮ߦڥͷઃఆมߋ͕Ͱ͖Δɻ • IaaS ԾαʔόʔετϨʔδɺωοτϫʔΫͳͲͷجຊతͳϦιʔεͷ࡞ɺར༻͕Ͱ͖ɺ ͦͷڥͰσϓϩΠɾ࣮ߦ͕Ͱ͖Δɻ
ϖοτͱՈச • ϖοτ ҰඖҰඖʹ໊લΛ͚ͭͯՄѪ͕Δɻ ো͕ൃੜ͠ͳ͍Α͏ʹɺαʔόʔҰͣͭʹ໊લΛ͚ͭɺ ৴པੑΛߴΊΔɻௐࢠ͕ѱͦ͏ͰखΛՃ͑ͯେʹ͍ͯ͠Δɻ • Ոச පؾʹͳͬͯࡴॲͯ͠Γͳ͚Εങ͍͢ɻ ෳͷαʔόʔΛߏʹͯ͠ɺௐࢠ͕ѱ͚Εམͱ͠ɺ
৽͍͠αʔόʔΛՃ͢Δɻ
ΥʔλʔϑΥʔϧͱΞδϟΠϧ • ΥʔλʔϑΥʔϧ ఔΛ͚ɺ্ྲྀ͔ΒԼྲྀྲྀ͠ɺ֤ఔͰ ࣮֬ͳͷΛ࡞Γ࣭Λ্ͤ͞ΔͷͰ͕͔͔࣌ؒΔɻ ͕࣌ؒܦͭʹͭΕมԽ͢ΔཁʹରԠ͢Δͷ͕͍͠ɻ • ΞδϟΠϧ ඞཁ࠷খݶͷཁ݅ΛՃ͑ͨՌΛ࡞ͬͯϦϦʔε͠ɺ ϑΟʔυόοΫΛड͚ͯܧଓతͳ։ൃΛ܁Γฦ͢ɻ
DevOps • ։ൃͱӡ༻͕࿈ܞ͠ɺ༷ʑͳख๏ͱจԽΛऔΓೖΕɺ αʔϏεվળͷ࣌ؒΛॖ͠ɺਝʹ Ϗδωεχʔζʹ͑Δ͜ͱ͕తɻ • νϟοτπʔϧ՝ཧɺόʔδϣϯཧɺ CI πʔϧɺΠϯϑϥࣗಈςετπʔϧɺ ϞχλϦϯάπʔϧΛΈ߹Θͤͯ
PDCA Λճ͢ɻ
Infrastructure as a Code • ΠϯϑϥͷίʔυԽ͢Δɻ • ΠϯϑϥͷઃఆɾߏΛςΩετϕʔεͰ ཧ͢Δɻ •
Ϋϥυ͕ఏڙ͢Δ API ͱ࿈ܞͯ͠ߏΛ อͭ͜ͱ͕Ͱ͖Δɻ
CI/CD • CIʢܧଓతΠϯςάϨʔγϣϯʣ ΞϓϦΛՃमਖ਼ͷͨͼʹςετΛͯ͠ ಈ͘ίʔυΛҡ࣋͢Δɻ • CDʢܧଓతσϦόϦʔʣ ػೳՃ͝ͱʹΞϓϦΛσϓϩΠͯ͠ ར༻ऀͷϑΟʔυόοΫΛૣΊΔɻ
͜ΕΒͷมભΛܦͯ • ։ൃεςʔδϯάɺຊ൪ڥͱ͍͏ϓϥοτϑΥʔϜΛ ލ͍Ͱʮ࣮֬ʹͲ͜Ͱಈ͘ΞϓϦʯΛ࡞Δ͜ͱ͕େมʹͳͬͨɻ • Ͳ͜Ͱಉ͡ԾΠϝʔδΛ͏ͷݱ࣮తͰͳ͘ɺ ߏཧπʔϧΛར༻ͯ͠ৗʹશͳঢ়ଶΛ࠶ݱ͢Δͷ ͍͠ɻ • ڥΛΘͣʹɺؒҧ͍ͳ͘ΞϓϦΛ࣮ߦ͠ɺ
։ൃऀӡ༻ऀ͕ʮ؆୯ʹʯѻ͑ΔΑ͏ʹͱొͨ͠ͷ͕ Docker ͱ͍͏ٕज़ɻ
ίϯςφٕज़ͷ֓ཁ
ίϯςφͱ • ϗετ OS ্ʹཧతͳ۠ըΛ࡞ΓɺΞϓϦʹ ඞཁͳϥΠϒϥϦΞϓϦΛ·ͱΊͯɺݸผͷ αʔόʔͷΑ͏ʹ͑ΔΑ͏ʹͨ͠ͷɻ • ϦιʔεΛཧతʹ͠ɺෳͷίϯςφͰ ڞ༗ͯ͠༻͢Δɻ
ԾԽͱίϯςφ ίϯςφ ԾԽ ϋʔυΣΞ ϋΠύʔόΠβʔ Ծڥ ϛυϧΣΞ ΞϓϦ ήετ04 Ծڥ
ϛυϧΣΞ ΞϓϦ ήετ04 ϋʔυΣΞ ϗετ04 ίϯςφϥϯλΠϜ ίϯςφ ϛυϧΣΞ ΞϓϦ ίϯςφ ϛυϧΣΞ ΞϓϦ
ίϯςφͱ͍͏֓೦ࣗମ ੲ͔Βଘࡏ͢Δ…
ίϯςφͷྺ࢙ • FreeBSD Jail • Solaris Containers • Linux Containers
(LXC)
Docker ͱ • Docker ࣾʢچ dotCloud ࣾʣ͕։ൃͨ͠ OSSɻ • ίϯςφٕज़ΛͬͨΞϓϦͷ࣮ߦڥΛ
ߏஙɾӡ༻͢ΔͨΊͷϓϥοτϑΥʔϜɻ • ΞϓϦʹඞཁͳϑΝΠϧΛίϯςφͱͯ͠·ͱΊɺ Πϝʔδͱͯ͠ڞ༗͢Δɻ • ϙʔλϏϦςΟ͕͋Γɺૉૣ࣮͘ߦͰ͖Δɻ
ίϯςφͱ͍͏֓೦͕Ұؾʹ ීٴͨ͠ͷ͕ Docker
Docker ͷྑ͍ͱ͜Ζ • ԾϚγϯΑΓ OS ىಈͳͲͷΦʔόʔϔου͕ গͳܰ͘ྔɻ • ։ൃऀ͕ΠϝʔδΛ࡞Εӡ༻ऀ࣮ߦ͢Δ͚ͩɻ •
Πϝʔδͷ͕؆୯ɻ • εέʔϧ͍͢͠ɻ • ҧ͏ͱ͜ΖͰ͍࣋ͬͯͬͯಈ͘ɻ
Docker ͷػೳ • ΠϝʔδΛ࡞ΔػೳʢBuildʣ • ΠϝʔδΛڞ༗͢ΔػೳʢShipʣ • ίϯςφΛಈ͔͢ػೳʢRunʣ
ΠϝʔδΛ࡞ΔػೳʢBuildʣ • ΠϝʔδΞϓϦΛ࣮ߦ͢ΔͨΊʹඞཁͳΞϓϦɺ ϥϯλΠϜɺϥΠϒϥϦɺઃఆϑΝΠϧΛؚΜͩ ύοέʔδɻ • ҰͭͷΠϝʔδʹҰͭͷΞϓϦΛೖΕɺ ෳͷίϯςφΛΈ߹Θͤͯߏங͢Δ͜ͱ͕ ਪ͞Ε͍ͯΔɻ
ΠϝʔδΛڞ༗͢ΔػೳʢShipʣ • ΠϝʔδΛ Docker ϨδετϦͰڞ༗Ͱ͖Δɻ • ެ։͞Ε͍ͯΔΠϝʔδΛݩʹϥΠϒϥϦɺ ΞϓϦΛೖΕͨΠϝʔδΛॏͶͯΠϝʔδΛ ࡞͍ͬͯ͘ɻ •
࡞ͬͨΠϝʔδΛެ։ͯ͠ڞ༗͢Δ͜ͱ͕ Ͱ͖Δɻ
ίϯςφΛಈ͔͢ػೳʢRunʣ • Docker Πϝʔδ͕͋ΕɺDocker ϥϯλΠϜ͕ ೖͬͯೖΕͲ͜Ͱίϯςφ͕ಈ͔ͤΔɻ • ҰͭͷΠϝʔδ͔ΒෳͷίϯςφΛ ಈ͔͢͜ͱͰ͖Δɻ
֓೦ͷิ
Dockerfile • ϕʔεͱͳΔΠϝʔδɺίϯςφͰߦ͏ૢ࡞ɺ ڥมͳͲͷઃఆɺίϯςφͰಈ࡞͢Δ ϓϩηεΛؚΜͩߏใΛఆٛ͢ΔϑΝΠϧɻ • docker image build ίϚϯυͰ
Dockerfile ΛݩʹΠϝʔδΛ࡞͢Δɻ
Docker ϨδετϦ • Docker ΠϝʔδΛެ։ɾڞ༗͢ΔϨδετϦɻ • ެࣜͱͯ͠ Docker Hub ͕ެ։͞Ε͍ͯΔɻ
• ࣗલͰϨδετϦΛཱͯΔ͜ͱՄೳɻ • جຊతʹ Docker Hub ʹެ։͞Ε͍ͯΔ ΠϝʔδΛݩʹ࡞͢Δɻ
Docker Hub • https://hub.docker.com/
ެࣜͷϦϙδτϦ • Docker ࣾͷݕࠪࡁΈͷϦϙδτϦɻ • ެࣜϕϯμʔ͔ΒΠϝʔδ͕ఏڙ͞Ε͍ͯΔɻ nginx, httpd, redis, mongo,
ubuntu… • Dockerfile Λॻ͘ͱ͖ͷࢀߟʹͳΔɻ
ωοτϫʔΫ • αʔόʔͷ NIC ͕ docker0 ͱ͍͏ԾϒϦοδʹ ଓ͞ΕΔɻ • 172.17.0.0/16
ͷαϒωοτϚεΫΛ࣋ͭ ϓϥΠϕʔτ IP ͕ίϯςφͷ eth0 ʹׂΓͯΒΕΔɻ • ίϯςφͷ eth0 ɺϗετ OS ʹ࡞͞Εͨ ԾNICʢvethxxxxxxʣͱϖΞͰׂΓͯΒΕΔɻ
ωοτϫʔΫߏ ϗετ04 ίϯςφ ίϯςφ FUIʢཧ/*$ʣ EPDLFSʢԾϒϦοδʣ FUI FUI WFUIYYYYYYʢԾ/*$ʣ WFUIYYYYYYʢԾ/*$ʣ
·ͣ৮ͬͯΈΑ͏
Hello world Ͱಈ࡞֬ೝ͠Α͏ EPDLFSDPOUBJOFSSVOIFMMPXPSME ҎԼͷίϚϯυͰ hello-world Λදࣔ͢Δɻ
web αʔόʔΛಈ͔ͯ͠ΈΑ͏ • nginx ͷΠϝʔδΛऔಘ͢Δɻ • ΠϝʔδΛ֬ೝ͢Δɻ nginx ͱ͍͏໊લͷΠϝʔδ͕μϯϩʔυ͞Εɺ
༰ྔ͕ 109 MB ͱ͍͏͜ͱ͕Θ͔Δɻ EPDLFSJNBHFQVMMOHJOY EPDLFSJNBHFMT
nginx Λಈ͔ͯ͠ΈΑ͏ • nginx ͷΠϝʔδ͔Β nginx Λىಈ͢Δɻ nginx ͱ͍͏ΠϝʔδΛͬͯɺweb ͱ͍͏
ίϯςφ໊Ͱ 80 ϙʔτͰͷΞΫηεΛڐՄ͍ͯ͠Δɻ EPDLFSDPOUBJOFSSVOOBNFXFCEQOHJOY Φϓγϣϯ OBNFίϯςφͷ໊લΛࢦఆ͢Δɻ EEFUBDIίϯςφΛόοΫάϥϯυͰ࣮ߦ͢Δɻ QQVCMJTIϗετ04ͱίϯςφͷϙʔτΛϚοϐϯά͢Δɻ
nginx ͷಈ࡞֬ೝͯ͠ΈΑ͏ • ϒϥβ͔Β http://localhost:80/ ʹΞΫηεͯ͠ τοϓը໘͕දࣔ͞ΕͨΒಈ࡞֬ೝྃɻ
nginx ͷঢ়ଶΛ֬ೝͯ͠ΈΑ͏ • nginx ͷαʔόʔͷঢ়ଶΛ֬ೝ͢Δɻ web ͱ͍͏໊લͷίϯςφͰ nginx ͷϓϩηε͕
ىಈ͠ɺ80 ϙʔτΛసૹ͍ͯ͠Δ͜ͱ͕Θ͔Δɻ EPDLFSDPOUBJOFSMT
nginx ίϯςφΛఀࢭͯ͠ΈΑ͏ • web ίϯςφΛఀࢭ͢Δɻ • ίϯςφͷঢ়ଶΛ֬ೝ͢Δɻ -a ΦϓγϣϯΛ༩͢Δͱఀࢭ͍ͯ͠Δ ίϯςφͷঢ়ଶΛऔಘͰ͖Δɻ
STATUS ͕ Exited ʹͳ͍ͬͯΔ͜ͱ͕͔Δɻ EPDLFSDPOUBJOFSTUPQXFC EPDLFSDPOUBJOFSMTB
nginx ίϯςφΛআͯ͠ΈΑ͏ • web ίϯςφΛఀࢭ͢Δɻ • ίϯςφͷঢ়ଶΛ֬ೝ͢Δɻ web ίϯςφ͕আ͞Εɺଘࡏ͠ͳ͍͜ͱ͕ ͔Δɻ
EPDLFSDPOUBJOFSSNXFC EPDLFSDPOUBJOFSMTB
ຊεϥΠυͰհ͢ΔίϚϯυ
Docker ίϚϯυ • docker image pull • docker image ls
• docker image rm • docker image prune • docker container run • docker container create • docker container logs • docker container ls • docker container start • docker container stop • docker container rm • docker container attach • docker container prune • docker container exec • docker container cp • docker network ls • docker network create • docker network connect • docker network disconnect • docker network rm • docker system prune
Πϝʔδͷૢ࡞
ΠϝʔδΛऔಘ͢Δ • λά໊Λলུ͢Δͱ latest ͕༻͞ΕΔ ɻ • ࣮ࡍʹར༻͢Δ࣌ɺͲͷΑ͏ͳόʔδϣϯ͕ಈ࡞ ͍ͯ͠Δ͔அͰ͖ͳ͍ͷͰɺlatest ༻͠ͳ͍ɻ
EPDLFSJNBHFQVMMΠϝʔδ໊<λά໊> VCVOUVΠϝʔδΛऔಘ͢Δྫ EPDLFSJNBHFQVMMVCVOUV
ΠϝʔδΛදࣔ͢Δ • ΠϝʔδΛ࡞͢ΔͱҰҙͷΠϝʔδ ID ͕ ༩͞ΕΔɻ EPDLFSJNBHFMT<Φϓγϣϯ><ϦϙδτϦ໊> Φϓγϣϯ BBMMதؒΠϝʔδؚΊͯશͯͷΠϝʔδΛදࣔ͢Δɻ
ΠϝʔδΛআ • ෳͷΠϝʔδΛআ͢Δ࣌εϖʔεͰ۠Δɻ • ະ༻ͷΠϝʔδΛશͯআ͢Δʹ EPDLFSJNBHFSN<Φϓγϣϯ>Πϝʔδ໊<Πϝʔδ໊> VCVOUVΠϝʔδΛআ͢Δྫ EPDLFSJNBHFSNVCVOUV EPDLFSJNBHFQSVOFB
ίϯςφͷىಈɾఀࢭɾআ
ίϯςφͷϥΠϑαΠΫϧ %PDLFSίϯςφ εφοϓ γϣοτ ࡞ %PDLFSίϯςφ εφοϓ γϣοτ ϓϩηε ىಈ
%PDLFSίϯςφ εφοϓ γϣοτ ఀࢭ %PDLFSίϯςφ εφοϓ γϣοτ আ docker container create ίϯςφ࡞ docker container run ίϯςφ࡞ɾىಈ docker container stop ίϯςφఀࢭ Docker Πϝʔδ docker container start ίϯςφىಈ docker container rm ίϯςφআ docker container start ίϯςφىಈ
ίϯςφ࡞ • ಛఆͷλΠϛϯάͷϑΝΠϧσΟϨΫτϦ Λ࣋ͬͨίϯςφΛ࡞͢Δɻ • ىಈ͢Δ४උ͕ͬͨίϯςφ͕࡞͞ΕΔɻ EPDLFSDPOUBJOFSDSFBUFa <Φϓγϣϯ>Πϝʔδ໊<λά໊><ίϚϯυ><Ҿ> TBNQMFΠϝʔδΛ࡞͢Δྫ EPDLFSDPOUBJOFSDSFBUFTBNQMFWCBTI
ίϯςφ࡞ɾىಈ • ίϯςφΛ࡞Γɺىಈ͢Δɻ Φϓγϣϯ OBNFίϯςφͷ໊લΛࢦఆ͢Δɻ EEFUBDIίϯςφΛόοΫάϥϯυͰ࣮ߦ͢Δɻ JJOUFSBDUJWFඪ४ೖྗΛ։͘ɻ UUUZσόΠεΛ͏ɻ QQVCMJTIϗετ04ͱίϯςφͷϙʔτΛϚοϐϯά͢Δɻ SNίϯςφऴྃ࣌ʹίϯςφΛࣗಈআ͢Δɻ
OFUଓ͢ΔίϯςφͷωοτϫʔΫΛࢦఆ͢Δɻ FFOWڥมΛઃఆ͢Δɻ EPDLFSDPOUBJOFSSVOa <Φϓγϣϯ>Πϝʔδ໊<λά໊><ίϚϯυ>
ίϯςφ࡞ɾىಈ FDIPίϚϯυΛ࣮ߦ͢Δྫ EPDLFSDPOUBJOFSSVOOBNFTBNQMFDFOUPTFDIPIFMMP όοΫάϥϯυͰQJOHίϚϯυΛ࣮ߦ͢Δྫ EPDLFSDPOUBJOFSSVOEOBNFTBNQMFDFOUPTQJOHMPDBMIPTU CBTIίϚϯυΛ࣮ߦͯ͠ίϯςφʹೖΔྫ EPDLFSDPOUBJOFSSVOOBNFTBNQMFJUDFOUPTCBTI
ίϯςφͷϩά֬ೝ • ίϯςφͷϩάΛ֬ೝ͢Δɻ EPDLFSDPOUBJOFSMPHT<Φϓγϣϯ>ίϯςφ໊ Φϓγϣϯ GGPMMPXϩάग़ྗΛଓ͚Δɻ UBJMϩάͷඌΛදࣔ͢Δɻ
ίϯςφͷىಈ • ఀࢭதͷίϯςφΛىಈ͢Δɻ EPDLFSDPOUBJOFSTUBSU<Φϓγϣϯ>ίϯςφ໊<ίϯςφ໊> TBNQMFίϯςφΛىಈ͢Δྫ EPDLFSDPOUBJOFSTUBSUTBNQMF
ίϯςφͷఀࢭ • ىಈ͍ͯ͠ΔίϯςφΛఀࢭ͠·͢ɻ • ίϯςφΛআ͢Δ࣌ίϯςφΛఀࢭͯ͠ ͓͘ඞཁ͕͋Δɻ EPDLFSDPOUBJOFSTUPQ<Φϓγϣϯ>ίϯςφ໊<ίϯςφ໊> TBNQMFίϯςφΛఀࢭ͢Δྫ EPDLFSDPOUBJOFSTUPQTBNQMF
ίϯςφͷআ • ఀࢭ͍ͯ͠ΔίϯςφΛআ͢Δɻ • ఀࢭதͷશίϯςφΛআ͢Δʹ docker container prune EPDLFSDPOUBJOFSSN<Φϓγϣϯ>ίϯςφ໊<ίϯςφ໊> TBNQMFίϯςφΛআ͢Δྫ
EPDLFSDPOUBJOFSSNTBNQMF
ίϯςφͷωοτϫʔΫ
ωοτϫʔΫͷදࣔ EPDLFSOFUXPSLMT<Φϓγϣϯ> ωοτϫʔΫҰཡΛදࣔ͢Δྫ EPDLFSOFUXPSLMT
ωοτϫʔΫͷ࡞ • σϑΥϧτ bridge υϥΠό͕༻͞ΕΔɻ ΦʔόʔϨΠωοτϫʔΫ ෳϗετؒωοτϫʔΫɻ EPDLFSOFUXPSLDSFBUF<Φϓγϣϯ>ωοτϫʔΫ໊ ωοτϫʔΫΛ࡞͢Δྫ EPDLFSOFUXPSLDSFBUFESJWFSCSJEHFNZOFU
Φϓγϣϯ EESJWFSωοτϫʔΫϒϦοδ·ͨΦʔόʔϨΠΛࢦఆ͢Δɻ
ωοτϫʔΫͷଓɾஅ ωοτϫʔΫଓ EPDLFSOFUXPSLDPOOFDU<Φϓγϣϯ>a ωοτϫʔΫ໊ίϯςφ໊ TBNQMFίϯςφΛNZOFUωοτϫʔΫʹଓ͢Δྫ EPDLFSOFUXPSLDPOOFDUNZOFUTBNQMF ωοτϫʔΫஅ EPDLFSOFUXPSLEJTDPOOFDU<Φϓγϣϯ>a ωοτϫʔΫ໊ίϯςφ໊
ωοτϫʔΫͷଓɾஅ • ωοτϫʔΫͷଓɺίϯςφͷىಈ࣌ʹ ߦ͏͜ͱͰ͖Δɻ OHJOYΛTBNQMFίϯςφͱ͍͏໊લͰ ɹNZOFUωοτϫʔΫʹଓͯ͠ىಈ͢Δྫ EPDLFSDPOUBJOFSSVOEOBNFTBNQMFJUa OFUNZOFUOHJOY
ωοτϫʔΫͷআ • আ͢Δʹɺଓதͷશͯͷίϯςφ͕ அ͞Ε͍ͯΔඞཁ͕͋Δɻ EPDLFSOFUXPSLSN<Φϓγϣϯ>ωοτϫʔΫ໊ ωοτϫʔΫΛআ͢Δྫ EPDLFSOFUXPSLSNNZOFU
Քಇίϯςφͷૢ࡞
Քಇίϯςφͷଓ • Քಇ͍ͯ͠Δίϯςφʹଓ͢Δɻ • ൈ͚Δʹ Ctrl + p, Ctrl +
q Λೖྗ͢Δɻ EPDLFSDPOUBJOFSBUUBDI<Φϓγϣϯ>ίϯςφ໊ TBNQMFίϯςφʹଓ͢Δྫ EPDLFSDPOUBJOFSBUUBDITBNQMF
ՔಇίϯςφͰίϚϯυ࣮ߦ • Քಇ͍ͯ͠ΔίϯςφͰ৽ͨʹϓϩηεΛ ࣮ߦ͢Δɻ EPDLFSDPOUBJOFSFYFD<Φϓγϣϯ>ίϯςφ໊ίϚϯυ<Ҿ> TBNQMFίϯςφʹCBTIίϚϯυΛ࣮ߦ͢Δྫ EPDLFSDPOUBJOFSFYFDJUTBNQMFCBTI Φϓγϣϯ EEFUBDIίϯςφΛόοΫάϥϯυͰ࣮ߦ͢Δɻ JJOUFSBDUJWFඪ४ೖྗΛ։͘ɻ
UUUZσόΠεΛ͏ɻ
ϑΝΠϧΛίϐʔ ίϯςφ͔Βϗετ04ͷϑΝΠϧίϐʔ EPDLFSDPOUBJOFSDQίϯςφ໊ίϯςφͷϑΝΠϧύεa ϗετ04ͷσΟϨΫτϦύε ϗετ04͔ΒίϯςφͷϑΝΠϧίϐʔ EPDLFSDPOUBJOFSDQϗετ04ͷσΟϨΫτϦύεa ίϯςφ໊ίϯςφͷϑΝΠϧύε ϗετ04͔ΒίϯςφͷϑΝΠϧΛίϐʔ͢Δྫ EPDLFSDPOUBJOFSDQOHJOYDPOGOHJOYFUDOHJOYOHJOYDPOG
ෆཁͳΠϝʔδɾίϯςφΛ Ұׅআ • ༻͍ͯ͠ͳ͍Πϝʔδɾίϯςφɾ ϘϦϡʔϜɾωοτϫʔΫΛҰׅͰআ͢Δɻ EPDLFSTZTUFNQSVOF<Φϓγϣϯ> Φϓγϣϯ BBMM༻͍ͯ͠ͳ͍ϦιʔεΛશͯআ͢Δɻ GGPSDFڧ੍తʹআ͢Δɻ
ϋϯζΦϯ
͓ • ubuntu:18.04 ͱ mysql:5.7 ΛϕʔεΠϝʔδʹͨ͠ίϯςφΛ ىಈ͢Δɻ • ubuntu ίϯςφʹɺapt-get
Ͱ mysql-clientΛ Πϯετʔϧ͢Δɻ • ωοτϫʔΫΛ৽ن࡞ͯͦ͠ΕͧΕͷίϯςφͰ ಉ͡ωοτϫʔΫʹଓ͢Δɻ • ubuntu ίϯςφ͔Β mysql ίϚϯυΛ༻ͯ͠ mysql ίϯςφͷ MySQL ʹଓ͢Δɻ
ubuntu ίϯςφΛىಈ͢Δ • ubuntu ίϯςφΛىಈ͢Δɻ • ubuntu ίϯςφͷঢ়ଶΛ֬ೝ͢Δɻ EPDLFSDPOUBJOFSSVOEOBNFNZTRMDMJJUa VCVOUVCBTI
EPDLFSDPOUBJOFSMT
ubuntu ίϯςφʹ mysql-client ΛΠϯετʔϧ͢Δ • ubuntu ίϯςφʹΞλον͢Δɻ • ubuntu ίϯςφʹ
mysql-client ΛΠϯετʔϧ ͯ͠ɺubuntu ίϯςφ͔Βൈ͚͓ͯ͘ɻ EPDLFSDPOUBJOFSBUUBDINZTRMDMJ BQUHFUVQEBUFBQUHFUJOTUBMMZNZTRMDMJFOU $USM Q $USM R
ωοτϫʔΫΛ࡞ͯ͠ ଓ͢Δ • ωοτϫʔΫΛ࡞͢Δɻ • ubuntu ίϯςφΛ࡞ͨ͠ωοτϫʔΫʹ ଓ͢Δɻ EPDLFSOFUXPSLDSFBUFNZOFU EPDLFSOFUXPSLDPOOFDUNZOFUNZTRMDMJ
mysql ίϯςφΛىಈͯ͠ ࡞ͨ͠ωοτϫʔΫʹଓ͢Δ • mysql ίϯςφΛىಈͯ͠ɺ ىಈ࣌ʹ࡞ͨ͠ωοτϫʔΫΛࢦఆ͢Δɻ • MYSQL_ALLOW_EMPTY_PASSWORD ͱ͍͏
ڥม͕ඞཁͳͷͰ yes Λࢦఆ͍ͯ͠Δɻ EPDLFSDPOUBJOFSSVOEOBNFNZTRMOFUNZOFUa F.:42-@"--08@&.15:@1"44803%ZFTNZTRM
ubuntu ίϯςφ͔Β mysql ίϯςφʹଓ͢Δ • ubuntu ίϯςφʹΞλον͢Δɻ • ubuntu ίϯςφ͔Β
mysql ίϚϯυΛ༻͠ ͯ mysql ίϯςφͷ MySQL ʹଓ͢Δɻ EPDLFSDPOUBJOFSBUUBDINZTRMDMJ ˌNZTRMINZTRM
MySQL ͷίϯςφΛىಈͯ͠ ผͷίϯςφ͔Β MySQL ʹ ଓ͢Δ͜ͱ͕Ͱ͖ͨʂ
͍͞͝ʹ
Docker ͕͑Ε Πϯϑϥͷ͍ࣝΒͳ͍ʁ
No
Linux ωοτϫʔΫͷ ͕ࣝෆཁʹͳΔΘ͚Ͱͳ͍ɻ
Docker Λ͓͑ͯ͘ͱ ڥߏஙָ͕ʹͳΔ͠ɺ ϛυϧΣΞΛࢼ͢ͷ ָʹͳΔɻ
దࡐదॴΛཧղͯ͠ Docker ͱ͍͏Ұͭͷٕज़Λ ͬͯΈΑ͏ɻ
·ͱΊ
·ͱΊ • Docker पลΛऔΓר͘എܠ͕͋Δɻ • Docker ͷ֓೦Λ͑ͨɻ • ͋Δఔ Docker
ίϚϯυʹ৮Εͨɻ • Docker Λ֮͑ͨͱͯ͠ Linux ωοτϫʔΫͷࣝඞཁɻ
جૅฤ1 ͓ΘΓ ࣍ճ Dockerfile docker-compose ʹ ৮ΕΔͷͰָ͓͠Έʹʂ
Appendix
ࢀߟจݙ • DevOpsಋೖࢦೆ Infrastructure as CodeͰνʔϜ։ൃɾαʔϏεӡ༻ΛޮԽ͢Δ • ϓϩάϥϚͷͨΊͷDockerڭՊॻ ୈ2൛ Πϯϑϥͷجૅࣝ&ίʔυʹΑΔڥߏஙͷࣗ
ಈԽ • ίϯςφɾϕʔεɾΦʔέετϨʔγϣϯ Docker/KubernetesͰ࡞ΔΫϥυ࣌ͷγε ςϜج൫ • https://docs.docker.com/ • http://blogs.itmedia.co.jp/narisako/2014/07/post-047f.html • https://www.slideshare.net/zembutsu/introduction-to-docker-management-and- operations-basic • https://knowledge.sakura.ad.jp/15940/