Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Docker ハンズオン 基礎編1 / Docker Handson Basic 1
Search
takasp
August 17, 2018
210
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
78
Git中級者になるためのrebase入門 / Introduction to rebase to become an intermediate Git user
takasp
0
84
GitHubで始めるdotfiles管理 / Getting started with GitHub for dotfiles management
takasp
0
85
第三回 Datadog 共有会 / Datadog Sharing 3rd
takasp
0
130
第二回 Datadog 共有会 / Datadog Sharing 2nd
takasp
0
96
Datadog 共有会 / Datadog Sharing
takasp
1
79
Git ハンズオン Part 1 / Git Handson Part 1
takasp
0
90
Docker ハンズオン 基礎編2 / Docker Handson Basic 2
takasp
1
120
Featured
See All Featured
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
230
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
530
sira's awesome portfolio website redesign presentation
elsirapls
0
410
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
380
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
420
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
The SEO Collaboration Effect
kristinabergwall1
1
570
Abbi's Birthday
coloredviolet
4
10k
Typedesign – Prime Four
hannesfritz
42
3.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/