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
Introduction to Docker
Search
Yukiyan
October 16, 2015
Programming
5.8k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Introduction to Docker
社内勉強会(2015/10/16)
Yukiyan
October 16, 2015
More Decks by Yukiyan
See All by Yukiyan
Introduction to Scala about type parameter
yukiyan
0
180
Introduction to Scala
yukiyan
0
110
digdagで支えるデータパイプライン / Building a data pipeline with digdag
yukiyan
1
5.9k
機械学習基盤を一人で構築するということ / Hitori ml team
yukiyan
3
3.7k
ECSのデプロイツールを試している話
yukiyan
0
2.5k
Replace a batch application to ECS
yukiyan
1
1.6k
Other Decks in Programming
See All in Programming
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1k
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
250
iOSDCのペンライトを自動制御したい!
akkeylab
0
260
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
19
19k
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
180
Heart of Swift Concurrency
koher
0
1.1k
Embedded Swiftで作る自作USBデバイス によるiOSデバイスの自動テスト / iOSDC Japan 2026 glassfiber
glassfiber
0
170
AWSに止められる覚悟してますか?
morizo_1984
2
490
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
310
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
330
setup-vp GitLab対応の裏側
naokihaba
0
140
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
360
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1369
210k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
20k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
530
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
510
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.1k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
320
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
330
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
290
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
620
Transcript
Introduction to Docker
Why choose this topic?
Big Wave Coming
Big Wave in ࣾ • Docker swarmͷػӡ • Docker࣮ફೖ(Dockerຊ)ͷ·Γ •
ͷνʔϜʹDocker৬ਓ͕͍Δ
Big Wave in the ੈք • Dockerʹؔ࿈༷ͨ͠ʑͳπʔϧͷొ • Docker Machine
• Docker swarm • Docker compose
·͍ͣ
Goal • DockerͷಛɾརΛཧղ͢Δ͜ͱ • DockerfileΛॻ͍ͯϏϧυ͢Δ·Ͱͷ؆୯ͳྲྀΕΛཧղ͢Δ ͜ͱ • Dockerʹ͓͚ΔσΟεΫΠϝʔδཧػೳɾϓϩηεཧ
DockerͷಛɾརΛ ཧղ͢Δ
What is Docker?
What is Docker? • Dockerࣾ ͕ΦʔϓϯιʔεͰެ։͍ͯ͠Δɺίϯςφٕज़ʹ ΑΔԾԽιϑτΣΞ • LXC(Linux Container),
AUFS(Another Union FS) • Vagrantͱൺֱͯ͠ىಈ͕͍ɻ
What is Container?
※ ※ ը૾Ҿ༻ݩ: http://www.slideshare.net/TrisM/docker-41045742 P22
Benefit • σϓϩΠ͕खܰʹͳΔ • εέʔϥϏϦςΟɾߴޮɾ൚༻ੑ
Use Case • ΞϓϦέʔγϣϯ • DB • Ϗϧυڥ • ͍Ζ͍ΖͳΜͰ
※ ※ ը૾Ҿ༻ݩ: http://www.slideshare.net/TrisM/docker-41045742 P22
DockerfileΛॻ͍ͯϏϧ υ͢Δ·Ͱͷ؆୯ͳྲྀΕ Λཧղ͢Δ
flow 1. Dockerfileॻ͘ 2. Ϗϧυ͢Δ 3. docker run͢Δ 4. ϨδετϦpush
1. Dockerfileॻ͘ FROM yukiyan_w/centos:centos6 MAINTAINER Yuki Wakayama RUN yum -y
install httpd RUN echo 'Hello, World!!' > /var/www/html/index.html ADD init.sh /usr/local/bin/init.sh RUN chmod u+x /usr/local/bin/init.sh CMD ["/usr/local/bin/init.sh"]
#!/bin/bash service httpd start /bin/bash
2. Ϗϧυ͢Δ docker build -t yukiyan_w/apache:ver1.0 . Πϝʔδ͕Ͱ͖Δ docker@dev:~$ docker
images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE yukiyan_w/apache ver1.0 e0bd562a2d43 1 days ago 264.1 MB yukiyan_w/centos centos6 a005304e4e74 1 days ago 203.1 MB
3. docker run͢Δ docker run -itd -p 8000:80 --name apache01
yukiyan_w/apache:ver1.0 ಈ͍ͯΔ͔֬ೝ docker@dev:~$ docker attach apache01 [root@3a607e0dd9f9 /]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 15:09 ? 00:00:00 /bin/bash /usr/local/bin/init.sh root 17 1 0 15:09 ? 00:00:00 /usr/sbin/httpd root 19 1 0 15:09 ? 00:00:00 /bin/bash apache 20 17 0 15:09 ? 00:00:00 /usr/sbin/httpd apache 21 17 0 15:09 ? 00:00:00 /usr/sbin/httpd apache 22 17 0 15:09 ? 00:00:00 /usr/sbin/httpd root 36 19 0 15:10 ? 00:00:00 ps -ef
4. ϨδετϦpush docker push yukiyan_w/apache
flow • Dockerfileॻ͘ɺϏϧυ͢Δɺ docker runɺ͍͡Δɺcommitɺtag ͚ͭΔɺϨδετϦ • DockerHub͔Βpull͢Δɺdocker runɺ͍͡Δɺcommitɺtag͚ͭΔɺ ϨδετϦ
※ ※ ը૾Ҿ༻ݩ: http://www.slideshare.net/TrisM/docker-41045742 P22
Cache for Faster Builds • DockerΠϝʔδΛࠩཧͯ͠ΔͷͰϏϧυ͕ૣ͍
docker build -t yukiyan_w/apache:ver1.0 . Step 0 : FROM yukiyan_w/centos:centos6
centos6: Pulling from yukiyan_w/centos Status: Downloaded newer image for yukiyan_w/centos:centos6 ---> a005304e4e74 Step 1 : MAINTAINER Yuki Wakayama ---> Running in 0eec2e2e93d1 ---> 2477c45cfa23 Removing intermediate container 0eec2e2e93d1 Step 2 : RUN yum -y install httpd ---> Running in 9dd64b9d2aeb ---> c09ed7b982db Removing intermediate container 9dd64b9d2aeb Step 3 : RUN echo 'Hello, World!!' > /var/www/html/index.html ---> Running in b8972fb573a7 ---> 9cd9b8077c76 Removing intermediate container b8972fb573a7 Step 4 : ADD init.sh /usr/local/bin/init.sh ---> 998ad3b60ab3 Removing intermediate container 23e41b8192c4 Step 5 : RUN chmod u+x /usr/local/bin/init.sh ---> Running in 2be75c857f5c ---> 5726cae34e32 Removing intermediate container 2be75c857f5c Step 6 : CMD /usr/local/bin/init.sh Successfully built e0bd562a2d4
ͪΐͬͱม͑Δ FROM yukiyan_w/centos:centos6 MAINTAINER Yuki Wakayama RUN yum -y install
httpd RUN echo 'Hello, World!!' > /var/www/html/index.html ADD init.sh /usr/local/bin/init.sh RUN chmod u+x /usr/local/bin/init.sh + RUN echo 'Hello, World!!' CMD ["/usr/local/bin/init.sh"]
Step 0 : FROM yukiyan_w/centos:centos6 ---> a005304e4e74 Step 1 :
MAINTAINER Yuki Wakayama ---> Using cache ---> 2477c45cfa23 Step 2 : RUN yum -y install httpd ---> Using cache ---> c09ed7b982db Step 3 : RUN echo 'Hello, World!!' > /var/www/html/index.html ---> Using cache ---> 9cd9b8077c76 Step 4 : ADD init.sh /usr/local/bin/init.sh ---> Using cache ---> 998ad3b60ab3 Step 5 : RUN chmod u+x /usr/local/bin/init.sh ---> Using cache ---> 5726cae34e32 Step 6 : RUN echo 'Hello, World!!' ---> Running in 4191d60ea4b0 Hello, World!! ---> c87043d1219f Removing intermediate container 4191d60ea4b0 Step 7 : CMD /usr/local/bin/init.sh ---> Running in 52aef5dab4ce ---> 042133d33472 Removing intermediate container 52aef5dab4ce Successfully built 042133d33472
!
But ⾠
yum update໋ྩΩϟογϡ͞ΕΔͷͰ`--no-cacheͱ͔͠ͳ ͍ͱ࣍ճϏϧυ࣌ʹ࠷৽ͷঢ়ଶʹΞοϓσʔτ͞Εͳ͍
Progress • DockerͷಛɾརΛཧղ͢Δ͜ͱ Done ✅ • DockerfileΛॻ͍ͯϏϧυ͢Δ·Ͱͷ؆୯ͳྲྀΕΛཧղ͢Δ ͜ͱ Done ✅
• Dockerʹ͓͚ΔσΟεΫΠϝʔδཧػೳɾϓϩηεཧ
ਫΛҿΉ࣌ؒ !
Dockerʹ͓͚ΔσΟεΫΠϝʔδཧ ػೳɾϓϩηεཧ
σΟεΫΠϝʔδཧػೳ
͖ͬ͞ɾɾɾ
FROM yukiyan_w/centos:centos6 MAINTAINER Yuki Wakayama RUN yum -y install httpd
RUN echo 'Hello, World!!' > /var/www/html/index.html ADD init.sh /usr/local/bin/init.sh RUN chmod u+x /usr/local/bin/init.sh CMD ["/usr/local/bin/init.sh"] ↓ docker build -t yukiyan_w/apache:ver1.0 .
FROM yukiyan_w/centos:centos6 DockerfileͰॻ͍ͯΔ͚ͲɺϏϧυcentos7Ͱߦͬͨ
• ίϯςφ෦ͰCentOS6͕ήετOS ͱͯ͠ಈ͍ͯΔΘ͚Ͱͳ͍ • ίϯςφ෦ͰCentOS6ͷڥͱ ಉ͡σΟεΫͷ༰͕ݟ͑Δ • CentOS6ͷσΟεΫʹೖͬͯΔόΠ φϦ/usr/sbin/httpd͔ΒσʔϞϯ ϓϩηεΛىಈ͢Δ
ήετOSͷىಈϓϩηεΛলུͯ͠ɺ తͷΞϓϦέʔγϣϯ͚ͩىಈ ͢Δ͜ͱ͕Ͱ͖Δ
͔ͩΒ͍
Dockerʹ͓͚ΔσΟεΫΠϝʔδཧػೳ Doneɾϓϩηε ཧ
ϓϩηεཧ
ෳཱͯͨίϯςφɺͦΕͧΕಠཱͨ͠ϓϩηεςʔϒϧ͕ ׂΓͯΒΕΔ
͖ͬ͞ݴͬͨ ήετOSͷىಈϓϩηεΛলུͯ͠ɺతͷΞϓϦέʔγϣϯ ͚ͩىಈ͢Δ͜ͱ͕Ͱ͖Δ
తͷΞϓϦέʔγϣϯ FROM yukiyan_w/centos:centos6 MAINTAINER Yuki Wakayama RUN yum -y install
httpd RUN echo 'Hello, World!!' > /var/www/html/index.html ADD init.sh /usr/local/bin/init.sh RUN chmod u+x /usr/local/bin/init.sh CMD ["/usr/local/bin/init.sh"]
ήετOSͷىಈϓϩηεΛলུͯ͠ɺతͷΞϓϦέʔγϣϯ ͚ͩىಈ͢Δ͜ͱ͕Ͱ͖Δ ↓ తͷΞϓϦέʔγϣϯ͕ PID=1 Ͱىಈ͞ΕͯΔͣ
docker@dev:~$ docker run -itd -p 8000:80 --name apache01 yukiyan_w/apache:ver1.0 docker@dev:~$
docker attach apache01 [root@3a607e0dd9f9 /]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 15:09 ? 00:00:00 /bin/bash /usr/local/bin/init.sh root 17 1 0 15:09 ? 00:00:00 /usr/sbin/httpd root 19 1 0 15:09 ? 00:00:00 /bin/bash apache 20 17 0 15:09 ? 00:00:00 /usr/sbin/httpd apache 21 17 0 15:09 ? 00:00:00 /usr/sbin/httpd apache 22 17 0 15:09 ? 00:00:00 /usr/sbin/httpd root 36 19 0 15:10 ? 00:00:00 ps -ef Dockerfileͷ࠷ऴߦͷίϚϯυ͕PID=1Ͱಈ͍ͯΔʂʂ CMD ["/usr/local/bin/init.sh"]
ϗετOS͔Βݟ͑Δϓϩηε docker@dev:~$ ps -ef UID PID PPID C STIME TTY
TIME CMD ʙ(Ұ෦লུ)ʙ root 1019 1 0 06:14 ? 00:00:42 /usr/local/bin/docker daemonɹলུ root 9832 1019 0 16:54 ? 00:00:00 docker-proxy -proto tcp লུ root 9844 1019 0 16:54 pts/1 00:00:00 /bin/bash /usr/local/bin/init.sh root 9862 9844 0 16:54 ? 00:00:00 /usr/sbin/httpd root 9864 9844 0 16:54 pts/1 00:00:00 /bin/bash 48 9865 9862 0 16:54 ? 00:00:00 /usr/sbin/httpd 48 9867 9862 0 16:54 ? 00:00:00 /usr/sbin/httpd 48 9868 9862 0 16:54 ? 00:00:00 /usr/sbin/httpd docker 9882 7689 0 16:54 pts/0 00:00:00 ps -ef ίϯςφͰಈ͍ͯΔϓϩηεݟ͑Δ͚ͲɺPID͕ҧ͏ʂʂ
None
Dockerʹ͓͚ΔσΟεΫΠϝʔδཧػೳ Doneɾϓϩηε ཧ Done
Progress ! • DockerͷಛɾརΛཧղ͢Δ͜ͱ Done ✅ • DockerfileΛॻ͍ͯϏϧυ͢Δ·Ͱͷ؆୯ͳྲྀΕΛཧղ͢Δ ͜ͱ Done
✅ • Dockerʹ͓͚ΔσΟεΫΠϝʔδཧػೳɾϓϩηεཧ Done ✅
Summary
Summary • DockerͷಛɾརΛཧղ͢Δ͜ͱ • Vagrantͱൺֱͯ͠ىಈ͕͍ɻ • ίϯςφͷ߹ɺԾϚγϯήετOSͱ͍͏ߟ͑ํ ͋Γ·ͤΜɻ • σϓϩΠ͕खܰʹͳΔ
• εέʔϥϏϦςΟɾߴޮɾ൚༻ੑ
Summary • DockerfileΛॻ͍ͯϏϧυ͢Δ·Ͱͷ؆୯ͳྲྀΕΛཧղ͢Δ ͜ͱ 1. Dockerfileॻ͘ 2. Ϗϧυ͢Δ 3. docker
run͢Δ 4. ϨδετϦpush
Summary • Dockerʹ͓͚ΔσΟεΫΠϝʔδཧػೳɾϓϩηεཧ • ήετOSͷىಈϓϩηεΛলུͯ͠ɺతͷΞϓϦέʔ γϣϯ͚ͩىಈ͢Δ͜ͱ͕Ͱ͖Δ • ϗετOS͔Βίϯςφͷϓϩηε͕ݟ͑Δ͚Ͳɺίϯ ςφ͔ΒϗετOSͷϓϩηεݟ͑ͳ͍
Next time... • Ԡ༻తͳ෦ • σʔλͷӬଓԽ • ࢹɺϩΪϯά • ωοτϫʔΫ
• पลٕज़ • swarm, compose • k8s, ECS
Build, Run, Enjoy !
Thanks for listening!