NaITE 13回目勉強会 Docker入門 資料
Docker ೖNaITE #132016.4.27
View Slide
ࣗݾհ໊લɿ֯ాɹढ़ʢͭͷͩɹ͠ΎΜʣίϛϡχςΟɿNaITEɹͳͲTwitterɿ͍ΉͯΜˏimtndۈઌɿ௨৴ܥۀۀɿιϑτΣΞ։ൃɹ5
Docker
ຊηογϣϯͷతDockerΛͳΜͱͳ͘ཧղ͢ΔDockerΛ࠷ݶ͑ΔΑ͏ʹͳΔ
Dockerʹ͍ͭͯDockerͱɺԾԽٕज़ͷҰͭίϯςφͱ͍͏୯ҐͰԾԽ͢Δ͜ͱʹΑΓɺOSͳͲʹґଘ͠ͳ͍γεςϜΛఏڙ
Dockerʹ͍ͭͯVirtual Machine containerhttps://www.docker.com/what-docker
DockerͷϝϦοτVMͱҧ͍ܰྔͰ͋Γɺىಈɺऴ͕ྃߴͰ͋ΔCIͳͲͰ͍ࣺͯͳ͕ΒΫϦʔϯͳڥͰςετ͢Δ͜ͱ͕Ͱ͖ΔύοέʔδΠϝʔδ͕ڞ༗Ͱ͖ɺ͙͢ʹ༻͢ΔΈ͕͋Δ
Docker Toolbox
Docker ToolboxDockerʹؔ࿈͢Δπʔϧ͕ύοέʔδԽ͞ΕͨͷDocker EngineDocker MachineDocker ComposeKitematic
DockerͷΠϯετʔϧํ๏Cent OS 7 Ҏ্yum ͰΠϯετʔϧՄೳUbuntu 15.04 Ҏ্ύοέʔδΛՃͯ͠ɺapt-getͰΠϯετʔϧՄೳhttps://docs.docker.com/engine/installation/linux/ubuntulinux/
DockerͷΠϯετʔϧํ๏ίϯςφઐ༻OShttps://coreos.com/using-coreos/containers/
DockerͷΠϯετʔϧํ๏ίϯςφઐ༻OSCoreOSProject AtomicRed Hat Enterprise Linux Atomic HostSnappy Ubuntu Core
DockerͷΠϯετʔϧํ๏WindowsɺMac OSͷ߹Virtual BoxDocker Toolbox※ɹ2016/04/27ݱࡏͷϝδϟʔͳํ๏
DockerͷΠϯετʔϧํ๏MacOSͱWindowsͷωΠςΟϒԾԽΛ༻͍ͨDocker७ਖ਼πʔϧʮDocker for Mac/WindowsʯొɺVirtualBoxෆཁʹhttp://www.publickey1.jp/blog/16/docker_for_macwindows.html
WindowsɺMac OSͰԿߟ͑ͳ͍ͰΠϯετʔϧ͢ΔͱɺVIrtual Box্ʹ”default”ͱ͍͏ԾϚγϯ͕Ͱ͖͍ͯΔLinuxͷ߹ίϚϯυͰɺDocker༻ͷԾϚγϯΛ࡞͢ΔDockerͷΠϯετʔϧํ๏
Docker Machine
Docker MachineDocker ϗετΛϚωδϝϯτ͢ΔπʔϧDocker ϗετͷ࡞Docker ϗετͷىಈDocker ϗετͷऴྃɹɹɹͳͲ
Docker MachineίϚϯυDocker MachineΛVirtual Box্ʹ࡞Docker Machineͷআ$docker-machine create —driver virtualbox vmD(ԾϚγϯ໊)$docker-machine rm vmD(ԾϚγϯ໊)
Docker MachineίϚϯυDockerϗετͷىಈDockerϗετͷऴྃDockerϗετͷҰཡදࣔ$docker-machine start default(ԾϚγϯ໊)$docker-machine stop default(ԾϚγϯ໊)$docker-machine ls
Docker MachineίϚϯυDockerϗετͷIPΞυϨε֬ೝDockerϗετͷϩάΠϯDockerϗετͷڥม֬ೝ$docker-machine ip default(ԾϚγϯ໊)$docker-machine ssh default(ԾϚγϯ໊)$docker-machine env default(ԾϚγϯ໊)
DockerίϚϯυDockerͷΠϝʔδͷऔಘ$docker pull centos:centos6ϦϙδτϦ໊ λά
DockerίϚϯυ$docker pull centos:centos6DockerϨδετϦʹެ։͞ΕͨDockerΠϝʔδpull
DockerϨδετϦDockerϨδετϦͱɺDockerͷΠϝʔδΛཧ͓ͯ͘͠ॴެࣜͰ༻ҙ͍ͯ͠ΔDockerϨδετϦDocker Hubhttps://hub.docker.com/
DockerίϚϯυDocker ΠϝʔδͷҰཡදࣔDocker Πϝʔδͷআ$docker images$docker rmi centos:centos6(ϦϙδτϦ໊:λά)
DockerίϚϯυCent OSͷDockerΠϝʔδΛಈ͔ͯ͠ΈΔ$docker run -t -i —name centos centos:centos6 /bin/bashίϯςφ໊Λ͚ΒΕΔ
DockerίϚϯυDocker ίϯςφͷҰཡදࣔDocker ίϯςφͷআ$docker ps -a$docker rm centos6(ίϯςφ໊)
DockerίϚϯυnginx(ΤϯδϯΤοΫε)ͷΠϝʔδऔಘϙʔτʹׂΓ͚ͯىಈ$docker pull nginx:latest$docker run -d -p 8080:80 —name nginx nginx:latestWebαʔόΛಈ͔ͯ͠ΈΔ
DockerίϚϯυDocker ίϯςφͷऴྃDocker ίϯςφͷىಈ$docker stop nginx(ίϯςφ໊)$docker start nginx(ίϯςφ໊)
DockerfileDockerfileͱɺDockerΠϝʔδΛ࡞͢ΔݩͱͳΔϑΝΠϧmakeϑΝΠϧͷΑ͏ͳͰɺҰίϚϯυͰDockerΠϝʔδ͕࡞ग़དྷΔ؆୯ʹهड़Ͱ͖ɺݟͨཧղ͍͢͠ͷ͕ಛ
DockerfileDockerfileαϯϓϧ$git clone https://github.com/imtnd/httpd.githttpd+- Dockerfile+- index.html※ɹGit͕ͳ͍ਓϒϥβ͔ΒΞΫηε
DockerfilehttpdσΟϨΫτϦʹҠಈ$cd httpdDockerfileΛݩʹDockerΠϝʔδͷ࡞$docker build -t httpd ./
Dockerfileίϯςφͷىಈ$docker run -d -p 80:80 httpd(ϦϙδτϦ໊)ϒϥβͰϗετͷIPΞυϨεʹΞΫηεͯ͠ΈΔͱɺ”hello docker”ͱݟ͑Δ
DockerfileFROM centos:centos6 MAINTAINER imtnd RUN yum install -y httpd ADD index.html /var/www/html/index.html EXPOSE 80/tcp CMD ["/usr/sbin/httpd","-D","FOREGROUND"]
DockerfileFROM centos:centos6 MAINTAINER imtnd RUN yum install -y httpd ADD index.html /var/www/html/index.html EXPOSE 80/tcp CMD ["/usr/sbin/httpd","-D","FOREGROUND"] ϕʔεͷDockerΠϝʔδ
DockerfileFROM centos:centos6 MAINTAINER imtnd RUN yum install -y httpd ADD index.html /var/www/html/index.html EXPOSE 80/tcp CMD ["/usr/sbin/httpd","-D","FOREGROUND"] DockerΠϝʔδ࡞ऀ
DockerfileFROM centos:centos6 MAINTAINER imtnd RUN yum install -y httpd ADD index.html /var/www/html/index.html EXPOSE 80/tcp CMD ["/usr/sbin/httpd","-D","FOREGROUND"] ίϚϯυͷ࣮ߦࢦࣔ
DockerfileFROM centos:centos6 MAINTAINER imtnd RUN yum install -y httpd ADD index.html /var/www/html/index.html EXPOSE 80/tcp CMD ["/usr/sbin/httpd","-D","FOREGROUND"] ϑΝΠϧͷՃࢦࣔ
DockerfileFROM centos:centos6 MAINTAINER imtnd RUN yum install -y httpd ADD index.html /var/www/html/index.html EXPOSE 80/tcp CMD ["/usr/sbin/httpd","-D","FOREGROUND"] ϙʔτ൪߸ͷొ
DockerfileFROM centos:centos6 MAINTAINER imtnd RUN yum install -y httpd ADD index.html /var/www/html/index.html EXPOSE 80/tcp CMD ["/usr/sbin/httpd","-D","FOREGROUND"] ίϯςφىಈ࣌ͷ࣮ߦίϚϯυࢦࣔ
Docker Compose
Docker ComposeίϯςφαʔϏε୯ҐͰߏங͍ͯ͘͠ͱཧָ͕ʹͳΔʢΞϓϦɺDBͳͲʣαʔϏεෳͷίϯςφʹΑͬͯߏங͞ΕΔ͜ͱʹͳΔͨΊҰׅͰཧ͢Δඞཁ͕͋ΔෳͷίϯςϯΛཧग़དྷΔΈ͕ɺDocker Compose
Docker ComposeDocker ComposeɺYMLϑΝΠϧͰίϯςφΛཧ͢ΔYMLϑΝΠϧαϯϓϧ(TestLinkͱ͍͏αʔϏε͕ಈ͘)$git clone https://github.com/imtnd/testlink_yml.git※ɹGit͕ͳ͍ਓϒϥβ͔ΒΞΫηε
Docker ComposeYMLϑΝΠϧΛݩʹαʔϏεΛىಈίϯςφͷঢ়ଶ֬ೝ$docker-compose up -d$docker-compose psԼهΞυϨεʹϒϥβ͔ΒΞΫηϧͰ͖Δhttp://xxx.xxx.xxx.xxx(ϗετͷIPΞυϨε)/testlink/ॳظઃఆͳͲԼهαΠτΛࢀরhttp://qiita.com/imtnd/items/a58a707db08c3710d963
Docker ComposeαʔϏεͷఀࢭ$docker-compose stopҰίϚϯυͰɺMySQLɺTestLinkͷαʔϏεͷίϯςφ͕ىಈͯ͠Δɻbusyboxͱ͍͏ͷɺσʔλΛӬଓԽ͢ΔͨΊͷίϯςφ
Docker ComposeDocker hubʹ͋ΔΠϝʔδΛ༻͢Δͱ໘͍͘͞ΠϯϑϥߏஙΛ͠ͳ͍ͰɺڥΛηοτΞοϓ͢Δ͜ͱ͕Ͱ͖ΔɻڵຯΛ࣋ͬͨπʔϧΛ؆୯ʹ༻ͯ͠Έ͍ͨ࣌ͳͲʹ࠷ద(πʔϧ໊)ɹdocker compose
ͦͷଞπʔϧDocker SwarmDocker RegistoryKitematic
ίϯςφؔ࿈αʔϏεtutum Kubernates
࠷ޙʹDocker ·ͩ·ͩ·ͩ·ͩൃల్தͳπʔϧͰ͢ɻ͜ͷεϥΠυͷใաڈͷʹͳ͍͖ͬͯ·͢ɻൃల్தͰ͋Δ͕ނʹɺ࠷৽ಈΛͬͯΈΔͱ໘ന͍ͱࢥ͍·͢ɻ
Let’s Run Container