Slide 1

Slide 1 text

Introduction to Docker

Slide 2

Slide 2 text

Why choose this topic?

Slide 3

Slide 3 text

Big Wave Coming

Slide 4

Slide 4 text

Big Wave in ࣾ಺ • Docker swarmͷػӡ • Docker࣮ફೖ໳(Dockerຊ)ͷ޿·Γ • ๻ͷνʔϜʹDocker৬ਓ͕͍Δ

Slide 5

Slide 5 text

Big Wave in the ੈք • Dockerʹؔ࿈༷ͨ͠ʑͳπʔϧͷొ৔ • Docker Machine • Docker swarm • Docker compose

Slide 6

Slide 6 text

·͍ͣ

Slide 7

Slide 7 text

Goal • Dockerͷಛ௃ɾར఺Λཧղ͢Δ͜ͱ • DockerfileΛॻ͍ͯϏϧυ͢Δ·Ͱͷ؆୯ͳྲྀΕΛཧղ͢Δ ͜ͱ • Dockerʹ͓͚ΔσΟεΫΠϝʔδ؅ཧػೳɾϓϩηε؅ཧ

Slide 8

Slide 8 text

Dockerͷಛ௃ɾར఺Λ ཧղ͢Δ

Slide 9

Slide 9 text

What is Docker?

Slide 10

Slide 10 text

What is Docker? • Dockerࣾ ͕ΦʔϓϯιʔεͰެ։͍ͯ͠Δɺίϯςφٕज़ʹ ΑΔԾ૝Խιϑτ΢ΣΞ • LXC(Linux Container), AUFS(Another Union FS) • Vagrant౳ͱൺֱͯ͠ىಈ͕଎͍ɻ

Slide 11

Slide 11 text

What is Container?

Slide 12

Slide 12 text

※ ※ ը૾Ҿ༻ݩ: http://www.slideshare.net/TrisM/docker-41045742 P22

Slide 13

Slide 13 text

Benefit • σϓϩΠ͕खܰʹͳΔ • εέʔϥϏϦςΟɾߴޮ཰ɾ൚༻ੑ

Slide 14

Slide 14 text

Use Case • ΞϓϦέʔγϣϯ • DB • Ϗϧυ؀ڥ • ͍Ζ͍ΖͳΜͰ΋ ※ ※ ը૾Ҿ༻ݩ: http://www.slideshare.net/TrisM/docker-41045742 P22

Slide 15

Slide 15 text

DockerfileΛॻ͍ͯϏϧ υ͢Δ·Ͱͷ؆୯ͳྲྀΕ Λཧղ͢Δ

Slide 16

Slide 16 text

flow 1. Dockerfileॻ͘ 2. Ϗϧυ͢Δ 3. docker run͢Δ 4. ϨδετϦ΁push

Slide 17

Slide 17 text

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"]

Slide 18

Slide 18 text

#!/bin/bash service httpd start /bin/bash

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

4. ϨδετϦ΁push docker push yukiyan_w/apache

Slide 22

Slide 22 text

flow • Dockerfileॻ͘ɺϏϧυ͢Δɺ docker runɺ͍͡Δɺcommitɺtag ͚ͭΔɺϨδετϦ΁ • DockerHub͔Βpull͢Δɺdocker runɺ͍͡Δɺcommitɺtag͚ͭΔɺ ϨδετϦ΁ ※ ※ ը૾Ҿ༻ݩ: http://www.slideshare.net/TrisM/docker-41045742 P22

Slide 23

Slide 23 text

Cache for Faster Builds • Docker͸ΠϝʔδΛࠩ෼؅ཧͯ͠ΔͷͰϏϧυ͕ૣ͍

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

ͪΐͬͱม͑Δ 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"]

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

!

Slide 28

Slide 28 text

But ⾠

Slide 29

Slide 29 text

yum update໋ྩ΋Ωϟογϡ͞ΕΔͷͰ`--no-cacheͱ͔͠ͳ ͍ͱ࣍ճϏϧυ࣌ʹ࠷৽ͷঢ়ଶʹΞοϓσʔτ͞Εͳ͍

Slide 30

Slide 30 text

Progress • Dockerͷಛ௃ɾར఺Λཧղ͢Δ͜ͱ Done ✅ • DockerfileΛॻ͍ͯϏϧυ͢Δ·Ͱͷ؆୯ͳྲྀΕΛཧղ͢Δ ͜ͱ Done ✅ • Dockerʹ͓͚ΔσΟεΫΠϝʔδ؅ཧػೳɾϓϩηε؅ཧ

Slide 31

Slide 31 text

ਫΛҿΉ࣌ؒ !

Slide 32

Slide 32 text

Dockerʹ͓͚ΔσΟεΫΠϝʔδ؅ཧ ػೳɾϓϩηε؅ཧ

Slide 33

Slide 33 text

σΟεΫΠϝʔδ؅ཧػೳ

Slide 34

Slide 34 text

͖ͬ͞ɾɾɾ

Slide 35

Slide 35 text

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 .

Slide 36

Slide 36 text

FROM yukiyan_w/centos:centos6 DockerfileͰ͸ॻ͍ͯΔ͚ͲɺϏϧυ͸centos7Ͱߦͬͨ

Slide 37

Slide 37 text

• ίϯςφ಺෦ͰCentOS6͕ήετOS ͱͯ͠ಈ͍ͯΔΘ͚Ͱ͸ͳ͍ • ίϯςφ಺෦Ͱ͸CentOS6ͷ؀ڥͱ ಉ͡σΟεΫͷ಺༰͕ݟ͑Δ • CentOS6ͷσΟεΫʹೖͬͯΔόΠ φϦ/usr/sbin/httpd͔ΒσʔϞϯ ϓϩηεΛىಈ͢Δ ήετOSͷىಈϓϩηεΛলུͯ͠ɺ ໨తͷΞϓϦέʔγϣϯ͚ͩ௚઀ىಈ ͢Δ͜ͱ͕Ͱ͖Δ

Slide 38

Slide 38 text

͔ͩΒ଎͍

Slide 39

Slide 39 text

Dockerʹ͓͚ΔσΟεΫΠϝʔδ؅ཧػೳ Doneɾϓϩηε؅ ཧ

Slide 40

Slide 40 text

ϓϩηε؅ཧ

Slide 41

Slide 41 text

ෳ਺ཱͯͨίϯςφ͸ɺͦΕͧΕಠཱͨ͠ϓϩηεςʔϒϧ͕ ׂΓ౰ͯΒΕΔ

Slide 42

Slide 42 text

͖ͬ͞ݴͬͨ ήετOSͷىಈϓϩηεΛলུͯ͠ɺ໨తͷΞϓϦέʔγϣϯ ͚ͩ௚઀ىಈ͢Δ͜ͱ͕Ͱ͖Δ

Slide 43

Slide 43 text

໨తͷΞϓϦέʔγϣϯ 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"]

Slide 44

Slide 44 text

ήετOSͷىಈϓϩηεΛলུͯ͠ɺ໨తͷΞϓϦέʔγϣϯ ͚ͩ௚઀ىಈ͢Δ͜ͱ͕Ͱ͖Δ ↓ ໨తͷΞϓϦέʔγϣϯ͕ PID=1 Ͱىಈ͞ΕͯΔ͸ͣ

Slide 45

Slide 45 text

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"]

Slide 46

Slide 46 text

ϗετ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͕ҧ͏ʂʂ

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

Dockerʹ͓͚ΔσΟεΫΠϝʔδ؅ཧػೳ Doneɾϓϩηε؅ ཧ Done

Slide 49

Slide 49 text

Progress ! • Dockerͷಛ௃ɾར఺Λཧղ͢Δ͜ͱ Done ✅ • DockerfileΛॻ͍ͯϏϧυ͢Δ·Ͱͷ؆୯ͳྲྀΕΛཧղ͢Δ ͜ͱ Done ✅ • Dockerʹ͓͚ΔσΟεΫΠϝʔδ؅ཧػೳɾϓϩηε؅ཧ Done ✅

Slide 50

Slide 50 text

Summary

Slide 51

Slide 51 text

Summary • Dockerͷಛ௃ɾར఺Λཧղ͢Δ͜ͱ • Vagrant౳ͱൺֱͯ͠ىಈ͕଎͍ɻ • ίϯςφͷ৔߹͸ɺԾ૝Ϛγϯ΍ήετOSͱ͍͏ߟ͑ํ ͸͋Γ·ͤΜɻ • σϓϩΠ͕खܰʹͳΔ • εέʔϥϏϦςΟɾߴޮ཰ɾ൚༻ੑ

Slide 52

Slide 52 text

Summary • DockerfileΛॻ͍ͯϏϧυ͢Δ·Ͱͷ؆୯ͳྲྀΕΛཧղ͢Δ ͜ͱ 1. Dockerfileॻ͘ 2. Ϗϧυ͢Δ 3. docker run͢Δ 4. ϨδετϦ΁push

Slide 53

Slide 53 text

Summary • Dockerʹ͓͚ΔσΟεΫΠϝʔδ؅ཧػೳɾϓϩηε؅ཧ • ήετOSͷىಈϓϩηεΛলུͯ͠ɺ໨తͷΞϓϦέʔ γϣϯ͚ͩ௚઀ىಈ͢Δ͜ͱ͕Ͱ͖Δ • ϗετOS͔Β͸ίϯςφͷϓϩηε͕ݟ͑Δ͚Ͳɺίϯ ςφ͔ΒϗετOSͷϓϩηε͸ݟ͑ͳ͍

Slide 54

Slide 54 text

Next time... • Ԡ༻తͳ෦෼ • σʔλͷӬଓԽ • ؂ࢹɺϩΪϯά • ωοτϫʔΫ • पลٕज़ • swarm, compose • k8s, ECS

Slide 55

Slide 55 text

Build, Run, Enjoy !

Slide 56

Slide 56 text

Thanks for listening!