ã€ã¡ãŒãžã®æ§ç¯Â¶
Docker ã€ã¡ãŒãžã¯ã³ã³ããã®åå°ïŒåºç€ïŒã§ããdocker run ãå®è¡ãã床ã«ãã©ã®ã€ã¡ãŒãžã䜿ããæå®ããŸããã¬ã€ãã®åã»ã¯ã·ã§ã³ã§ã¯ãæ¢åã® ubuntu ã€ã¡ãŒãžãš training/webapp ã€ã¡ãŒãžã䜿ããŸããã
Docker ã¯ããŠã³ããŒãããã€ã¡ãŒãžã Docker ãã¹ãäžã«ä¿ç®¡ããŠãããããããèŠãããšãã§ããŸãããããã¹ãäžã«ã€ã¡ãŒãžããªããã°ãDocker ã¯ã¬ãžã¹ããªããã€ã¡ãŒãžãããŠã³ããŒãããŸããæšæºã®ã¬ãžã¹ããªã¯ Docker Hub ã¬ãžã¹ã㪠ã§ãã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ Docker ã€ã¡ãŒãžã«ã€ããŠã次ã®å 容ãå«ããŠæ·±æãããŸãã
ããŒã«ã«ã® Docker ãã¹ãäžã«ããã€ã¡ãŒãžã®ç®¡çãšæäœ
åºæ¬ã€ã¡ãŒãžã®äœæ
ã€ã¡ãŒãžã Docker Hub ã¬ãžã¹ã㪠ã«ã¢ããããŒã
ãã¹ãäžã®ã€ã¡ãŒãžäžèЧã衚瀺¶
ããŒã«ã«ã®ãã¹ãäžã«ããã€ã¡ãŒãžã®äžèЧã衚瀺ããŸãããã衚瀺ããã«ã¯ docker images ã³ãã³ãã䜿ããŸãã
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 14.04 1d073211c498 3 days ago 187.9 MB
busybox latest 2c5ac3f849df 5 days ago 1.113 MB
training/webapp latest 54bb4e8718e8 5 months ago 348.7 MB
ãããŸã§ã®ã¬ã€ãã§äœ¿çšããã€ã¡ãŒãžã衚瀺ããŸãããããããã³ã³ããã§ã€ã¡ãŒãžãèµ·åããæã« Docker Hub ããããŠã³ããŒããããã®ã§ããã€ã¡ãŒãžã®äžèŠ§è¡šç€ºã«ã¯ãïŒã€ã®éèŠãªæ å ±ã衚瀺ãããŸãã
ã©ã®ãªããžããªããååŸããã®ãïŒäŸïŒ
ubuntuïŒåã€ã¡ãŒãžã®ã¿ã°ïŒäŸïŒ
14.04ïŒã€ã¡ãŒãžããšã®ã€ã¡ãŒãž ID
Tip
ãµãŒãã»ããŒãã£è£œã® dockviz tool ã image layers ãµã€ã ã§ã€ã¡ãŒãžã»ããŒã¿ãå¯èŠåã§ããŸãã
ãªããžããªã«ãã£ãŠã¯è€æ°ã®æŽŸçã€ã¡ãŒãžãæã€å ŽåããããŸããå
ã»ã©ã® ubuntu ã€ã¡ãŒãžã®å Žåã¯ãUbuntu 10.04ã12.04ã12.10ã13.03ã13.10 ãšãããè€æ°ã®ç°ãªã掟çã€ã¡ãŒãžããããŸããããããã®éããã¿ã° (tag) ã«ãã£ãŠèå¥ããŸãããããŠã次ã®ããã«ã€ã¡ãŒãžã«å¯Ÿããã¿ã°ãšããŠåç
§ã§ããŸãã
ubuntu:14.04
ãã®ãããã³ã³ãããå®è¡ããæã¯ã次ã®ããã«ã¿ã°ä»ããããã€ã¡ãŒãžãåç §ã§ããŸãã
$ docker run -t -i ubuntu:14.04 /bin/bash
ããã㯠Ubuntu 12.04 ã€ã¡ãŒãžã䜿ãããå Žåã¯ã次ã®ããã«ããŸãã
$ docker run -t -i ubuntu:12.04 /bin/bash
ã¿ã°ãæå®ããªãå Žåãããã§ã¯ ubuntu ããæå®ããªããã°ãDocker ã¯æšæºã§ ubuntu:latest ã€ã¡ãŒãžã䜿çšããŸãã
Tip
åžžã« ubuntu:14.04 ã®ããã«ã€ã¡ãŒãžã«å¯Ÿããã¿ã°ãæå®ãã¹ãã§ããã¿ã°ã®æå®ãããã確å®ã«ã€ã¡ãŒãžã䜿ããããã«ããææ³ã ããã§ãããã©ãã«ã·ã¥ãŒãããããã°ã«äŸ¿å©ã§ãã
æ°ããã€ã¡ãŒãžã®ååŸÂ¶
ããã§ã¯ãæ°ããã€ã¡ãŒãžãã©ããã£ãŠååŸã§ããã®ã§ãããããDocker 㯠Docker ãã¹ãäžã«ååšããªãã€ã¡ãŒãžã䜿ãæãèªåçã«ã€ã¡ãŒãžãããŠã³ããŒãããŸããããããªãããã³ã³ãããèµ·åãããŸã§å°ã
æéããããå ŽåããããŸããã€ã¡ãŒãžããããããããŠã³ããŒããããå Žåã¯ãdocker pull ã³ãã³ãã䜿ããŸãã以äžã¯ centos ã€ã¡ãŒãžãããŠã³ããŒãããäŸã§ãã
$ docker pull centos
Pulling repository centos
b7de3133ff98: Pulling dependent layers
5cc9e91966f7: Pulling fs layer
511136ea3c5a: Download complete
ef52fb1fe610: Download complete
. . .
Status: Downloaded newer image for centos
ã€ã¡ãŒãžã®åã¬ã€ã€ãååŸããŠããã®ãèŠããŸããã³ã³ãããèµ·åããæããã®ã€ã¡ãŒãžã䜿ãã°ã€ã¡ãŒãžã®ããŠã³ããŒãã®ããã«åŸ ã€å¿ èŠã¯ãããŸããã
$ docker run -t -i centos /bin/bash
bash-4.1#
ã€ã¡ãŒãžã®æ€çŽ¢Â¶
Docker ã®ç¹é·ã®ïŒã€ã«ãæ§ã ãªç®çã® Docker ã€ã¡ãŒãžãå€ãã®æ¹ã«ãã£ãŠäœãããŠããŸãã倧éšåã Docker Hub ã«ã¢ããããŒããããŠããŸãããããã€ã¡ãŒãžã¯ Docker Hub ã®ãŠã§ããµã€ã ããæ€çŽ¢ã§ããŸãã
ã€ã¡ãŒãžãæ€çŽ¢ããã«ã¯ãã³ãã³ãã©ã€ã³äžã§ docker search ã³ãã³ããäœ¿ãæ¹æ³ããããŸããããŒã ã§ãŠã§ãã»ã¢ããªã±ãŒã·ã§ã³ã®éçºã®ããã« Ruby ãš Sinatra ãã€ã³ã¹ããŒã«ããã€ã¡ãŒãžãå¿
èŠãšä»®å®ããŸããdocker search ã³ãã³ãã䜿ãããšã§ãæåå sinatra ãå«ãå
šãŠã®ã€ã¡ãŒãžã衚瀺ããŠãããããé©åãªã€ã¡ãŒãžãæ¢ããŸãã
$ docker search sinatra
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
training/sinatra Sinatra training image 0 [OK]
marceldegraaf/sinatra Sinatra test app 0
mattwarren/docker-sinatra-demo 0 [OK]
luisbebop/docker-sinatra-hello-world 0 [OK]
bmorearty/handson-sinatra handson-ruby + Sinatra for Hands on with D... 0
subwiz/sinatra 0
bmorearty/sinatra 0
. . .
ã³ãã³ããå®è¡ããããsinatra ãå«ãå€ãã®ã€ã¡ãŒãžã衚瀺ããŸãã衚瀺ããã®ã¯ãã€ã¡ãŒãžåã®äžèЧãã¹ã¿ãŒïŒã€ã¡ãŒãžããœãŒã·ã£ã«äžã§æåãã©ããæž¬ããã®ã§ããå©çšè
ã¯ã€ã¡ãŒãžãæ°ã«å
¥ãã°"ã¹ã¿ãŒ"ãä»ããããŸã ïŒãå
¬åŒïŒOFFICIALïŒããèªåæ§ç¯ïŒAUTOMATEDïŒãšãã£ãç¶æ
ã§ããå
¬åŒãªããžã㪠ãšã¯ãDocker 瀟ã®ãµããŒããã£ãŠäžå¯§ã«ç²Ÿæ»ãããŠãã Docker ãªããžããªã§ããèªåæ§ç¯ïŒAutomated BuildïŒ ãšã¯æå¹ãªãœãŒã¹ã³ãŒããå
ã«ãã€ã¡ãŒãžå
容ãèªåæ§ç¯ããããªããžããªã§ãã
ããŠãå©çšå¯èœãªã€ã¡ãŒãžã®å
容ã確èªããŸããããã§ã¯ training/sinatra ã€ã¡ãŒãžã䜿ãããšã«ããŸãããããŸã§ïŒçš®é¡ã®ã€ã¡ãŒãžã»ãªããžããªããããŸãããubuntu ã®ãããªã€ã¡ãŒãžã¯ããŒã¹ã»ã€ã¡ãŒãžãŸãã¯ã«ãŒãã»ã€ã¡ãŒãžãšåŒã°ããŸãããã®ããŒã¹ã»ã€ã¡ãŒãžã¯ Docker 瀟ã«ãã£ãŠæäŸãæ§ç¯ãèªèšŒããµããŒããããŠããŸãããããã¯åäžã®åèªåãšããŠè¡šç€ºãããŠããŸãã
ãŸããtraining/sinatra ã€ã¡ãŒãžã®ãããªãŠãŒã¶ã»ã€ã¡ãŒãžããããŸãããŠãŒã¶ã»ã€ã¡ãŒãžãšã¯ Docker ã³ãã¥ããã£ã®ã¡ã³ããŒã«å±ãããã®ã§ãã¡ã³ããŒã«ãã£ãŠæ§ç¯ãã¡ã³ããã³ã¹ãããŸãããŠãŒã¶ã»ã€ã¡ãŒãžã¯ãåžžã«ãŠãŒã¶åãã€ã¡ãŒãžã®åã«ä»ããŸãããã®äŸã®ã€ã¡ãŒãžã¯ãtraining ãšãããŠãŒã¶ã«ãã£ãŠäœæãããŸããã
ã€ã¡ãŒãžã®ååŸÂ¶
é©åãªã€ã¡ãŒãž training/sinatra ã確èªããããdocker pull ã³ãã³ãã䜿ã£ãŠããŠã³ããŒãã§ããŸãã
$ docker pull training/sinatra
ããã§ããŒã ã¯ãã®ã€ã¡ãŒãžã䜿ããèªèº«ã§ã³ã³ãããå®è¡ã§ããŸãã
$ docker run -t -i training/sinatra /bin/bash
root@a8cb6ce02d85:/#
ã€ã¡ãŒãžã®äœæÂ¶
ããŒã ã§ã¯ training/sinatra ã€ã¡ãŒãžãæçšã ãšåãããŸãããããããã€ã¡ãŒãžãèªåãã¡ã䜿ããããã«ããã«ã¯ãããã€ãã®å€æŽãå¿
èŠã§ããã€ã¡ãŒãžã®æŽæ°ãäœæã«ã¯ïŒã€ã®æ¹æ³ããããŸãã
ã€ã¡ãŒãžããäœæããã³ã³ãããæŽæ°ããã€ã¡ãŒãžã®çµæãã³ããããã
Dockerfileã䜿ã£ãŠãã€ã¡ãŒãžäœæã®åœä»€ãæå®ãã
æŽæ°ãšã€ã¡ãŒãžã®ã³ããã¶
ã€ã¡ãŒãžãæŽæ°ããã«ã¯ããŸãæŽæ°ãããã€ã¡ãŒãžããã³ã³ãããäœæããå¿ èŠããããŸãã
$ docker run -t -i training/sinatra /bin/bash
root@0b2616b0e5a8:/#
泚é
äœæããã³ã³ãã ID ãããã§ã¯ 0b2616b0e5a8 ãã¡ã¢ããŠãããŸãããã®ããšãã䜿ããŸãã
å®è¡ããŠããã³ã³ããå
ã« json gem ã远å ããŸãããã
root@0b2616b0e5a8:/# gem install json
ãã®äœæ¥ãçµãã£ãããexit ã³ãã³ãã䜿ã£ãŠã³ã³ãããçµäºããŸãã
以äžã§èªåãã¡ãå¿
èŠãªå€æŽãå ããã³ã³ãããã§ããŸãããæ¬¡ã« docker commit ã³ãã³ãã䜿ããã€ã¡ãŒãžã«å¯ŸããŠãã®ã³ã³ããã®ã³ããŒãã³ãããïŒå容ïŒã§ããŸãã
$ docker commit -m "Added json gem" -a "Kate Smith" \
0b2616b0e5a8 ouruser/sinatra:v2
4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c
ããã§äœ¿ã£ã docker commit ã³ãã³ãã®å
容ã確èªããŸããïŒã€ã®ãã©ã° -m ãš -a ãæå®ããŠããŸãã-m ãã©ã°ã¯ã³ãããã»ã¡ãã»ãŒãžãæå®ãããã®ã§ãããŒãžã§ã³ã»ã³ã³ãããŒã«ã»ã·ã¹ãã ã®ããã«ã³ãããã§ããŸãã-a ãã©ã°ã¯æŽæ°ãè¡ã£ãæ
åœè
ãæå®ã§ããŸãã
ãŸããæ°ããã€ã¡ãŒãžãäœæããå
ãšãªãã³ã³ãããæå®ããŸããããã§ã¯ 0b2616b0e5a8 ïŒå
ã»ã©æžãçãã IDïŒã§ãããããŠãã¿ãŒã²ãããšãªãã€ã¡ãŒãžã次ã®ããã«æå®ããŸãã
ouruser/sinatra:v2
ãã¡ãã®è©³çްãèŠãŠãããŸããããouruser ã¯æ°ãããŠãŒã¶åã§ããããã®ã€ã¡ãŒãžãæžãã人ã§ãããŸããã€ã¡ãŒãžã«å¯ŸããŠäœããã®ååãæå®ããŸããããã§ã¯ãªãªãžãã«ã®ã€ã¡ãŒãžå sinatra ããã®ãŸãŸäœ¿ããŸããæåŸã«ãã€ã¡ãŒãžã«å¯Ÿããã¿ã° v2 ãæå®ããŸãã
ããšã¯ docker images ã³ãã³ãã䜿ãã°ãäœæããæ°ããã€ã¡ãŒãž ouruser/sinatra ãèŠããŸãã
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
training/sinatra latest 5bc342fa0b91 10 hours ago 446.7 MB
ouruser/sinatra v2 3c59e02ddd1a 10 hours ago 446.7 MB
ouruser/sinatra latest 5db5f8471261 10 hours ago 446.7 MB
äœæããã€ã¡ãŒãžã䜿ã£ãŠã³ã³ãããäœæããã«ã¯ã次ã®ããã«ããŸãã
$ docker run -t -i ouruser/sinatra:v2 /bin/bash
root@78e82f680994:/#
Dockerfile ããã€ã¡ãŒãžãæ§ç¯Â¶
docker commit ã³ãã³ããäœ¿ãæ¹æ³ã¯ãã€ã¡ãŒãžãç°¡åã«æ¡åŒµããŸããããããå°ã
é¢åãªãã®ã§ãããããŒã å
ã®éçºããã»ã¹ã§ã€ã¡ãŒãžãå
±æããã®ã¯ç°¡åã§ã¯ãããŸããããã®æ¹æ³ã§ã¯ãªããæ°ããã³ãã³ã docker build ãäœ¿ãæ§ç¯ããæ¹æ³ããã€ã¡ãŒãžãã¹ã¯ã©ããïŒãŒãïŒããäœæããæ¹æ³ããããŸãã
ãã®æ§ç¯ã³ãã³ãã䜿ãã«ã¯ Dockerfile ãäœæããŸãããã®äžã« Docker ãã©ã®ããã«ããŠã€ã¡ãŒãžãæ§ç¯ããã®ããåœä»€ã»ãããèšè¿°ããŸãã
äœæããã«ã¯ãŸãããã£ã¬ã¯ããªãš Dockerfile ãäœæããŸãã
$ mkdir sinatra
$ cd sinatra
$ touch Dockerfile
Windows ã§ Docker Machine ã䜿ã£ãŠããå Žåã¯ããã¹ãã»ãã£ã¬ã¯ããªã«ã¯ cd ã§ /c/Users/ãŠãŒã¶å ãæå®ããŠã¢ã¯ã»ã¹ã§ããã§ãããã
åã ã®åœä»€ã§æ°ããã€ã¡ãŒãžå±€ãäœæããŸããç°¡åãªäŸãšããŠãæ¶ç©ºã®éçºããŒã åãã® Sinatra ã€ã¡ãŒãžãæ§ç¯ããŸãããã
# ããã¯ã³ã¡ã³ãã§ã
FROM ubuntu:14.04
MAINTAINER Kate Smith <ksmith@example.com>
RUN apt-get update && apt-get install -y ruby ruby-dev
RUN gem install sinatra
Dockerfile ãäœãããŠããã調ã¹ãŸããããããã®åœä»€ïŒinstructionïŒã¯ãã¹ããŒãã¡ã³ãïŒstatementïŒã®åã«ããã倧æåã§èšè¿°ããŸãã
åœä»€ ã¹ããŒãã¡ã³ã
泚é
# ã䜿ã£ãŠã³ã¡ã³ãã瀺ããŸã
åé ã® FROM åœä»€ã¯ Docker ã«å¯ŸããŠåºãšãªãã€ã¡ãŒãžãäŒããŸãããã®äŸã§ã¯ãæ°ããã€ã¡ãŒãžã¯ Ubuntu 14.04 ã€ã¡ãŒãžãåºã«ããŸããMAINTAINER åœä»€ã¯èª°ããã®æ°ããã€ã¡ãŒãžã管çãããæå®ããŸãã
æåŸã« RUN åœä»€ãæå®ããŠããŸããRUN åœä»€ã¯ã€ã¡ãŒãžã®äžã§å®è¡ããã³ãã³ããæç€ºããŸãããã®äŸã§ã¯ããã±ãŒãžã®ã€ã³ã¹ããŒã«ã®ããã«ããŸã APT ãã£ãã·ã¥ãæŽæ°ããŸãããããããRuby ãš RubyGem ãã€ã³ã¹ããŒã«ããSinatra gem ãã€ã³ã¹ããŒã«ããŸãã
ããšã¯ Dockerfile ãçšããdocker build ã³ãã³ãã§ã€ã¡ãŒãžãæ§ç¯ããŸãã
$ docker build -t ouruser/sinatra:v2 .
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon
Step 1 : FROM ubuntu:14.04
---> e54ca5efa2e9
Step 2 : MAINTAINER Kate Smith <ksmith@example.com>
---> Using cache
---> 851baf55332b
Step 3 : RUN apt-get update && apt-get install -y ruby ruby-dev
---> Running in 3a2558904e9b
Selecting previously unselected package libasan0:amd64.
(Reading database ... 11518 files and directories currently installed.)
Preparing to unpack .../libasan0_4.8.2-19ubuntu1_amd64.deb ...
Unpacking libasan0:amd64 (4.8.2-19ubuntu1) ...
Selecting previously unselected package libatomic1:amd64.
Preparing to unpack .../libatomic1_4.8.2-19ubuntu1_amd64.deb ...
Unpacking libatomic1:amd64 (4.8.2-19ubuntu1) ...
Selecting previously unselected package libgmp10:amd64.
Preparing to unpack .../libgmp10_2%3a5.1.3+dfsg-1ubuntu1_amd64.deb ...
Unpacking libgmp10:amd64 (2:5.1.3+dfsg-1ubuntu1) ...
Selecting previously unselected package libisl10:amd64.
Preparing to unpack .../libisl10_0.12.2-1_amd64.deb ...
Unpacking libisl10:amd64 (0.12.2-1) ...
Selecting previously unselected package libcloog-isl4:amd64.
Preparing to unpack .../libcloog-isl4_0.18.2-1_amd64.deb ...
Unpacking libcloog-isl4:amd64 (0.18.2-1) ...
Selecting previously unselected package libgomp1:amd64.
Preparing to unpack .../libgomp1_4.8.2-19ubuntu1_amd64.deb ...
Unpacking libgomp1:amd64 (4.8.2-19ubuntu1) ...
Selecting previously unselected package libitm1:amd64.
Preparing to unpack .../libitm1_4.8.2-19ubuntu1_amd64.deb ...
Unpacking libitm1:amd64 (4.8.2-19ubuntu1) ...
Selecting previously unselected package libmpfr4:amd64.
Preparing to unpack .../libmpfr4_3.1.2-1_amd64.deb ...
Unpacking libmpfr4:amd64 (3.1.2-1) ...
Selecting previously unselected package libquadmath0:amd64.
Preparing to unpack .../libquadmath0_4.8.2-19ubuntu1_amd64.deb ...
Unpacking libquadmath0:amd64 (4.8.2-19ubuntu1) ...
Selecting previously unselected package libtsan0:amd64.
Preparing to unpack .../libtsan0_4.8.2-19ubuntu1_amd64.deb ...
Unpacking libtsan0:amd64 (4.8.2-19ubuntu1) ...
Selecting previously unselected package libyaml-0-2:amd64.
Preparing to unpack .../libyaml-0-2_0.1.4-3ubuntu3_amd64.deb ...
Unpacking libyaml-0-2:amd64 (0.1.4-3ubuntu3) ...
Selecting previously unselected package libmpc3:amd64.
Preparing to unpack .../libmpc3_1.0.1-1ubuntu1_amd64.deb ...
Unpacking libmpc3:amd64 (1.0.1-1ubuntu1) ...
Selecting previously unselected package openssl.
Preparing to unpack .../openssl_1.0.1f-1ubuntu2.4_amd64.deb ...
Unpacking openssl (1.0.1f-1ubuntu2.4) ...
Selecting previously unselected package ca-certificates.
Preparing to unpack .../ca-certificates_20130906ubuntu2_all.deb ...
Unpacking ca-certificates (20130906ubuntu2) ...
Selecting previously unselected package manpages.
Preparing to unpack .../manpages_3.54-1ubuntu1_all.deb ...
Unpacking manpages (3.54-1ubuntu1) ...
Selecting previously unselected package binutils.
Preparing to unpack .../binutils_2.24-5ubuntu3_amd64.deb ...
Unpacking binutils (2.24-5ubuntu3) ...
Selecting previously unselected package cpp-4.8.
Preparing to unpack .../cpp-4.8_4.8.2-19ubuntu1_amd64.deb ...
Unpacking cpp-4.8 (4.8.2-19ubuntu1) ...
Selecting previously unselected package cpp.
Preparing to unpack .../cpp_4%3a4.8.2-1ubuntu6_amd64.deb ...
Unpacking cpp (4:4.8.2-1ubuntu6) ...
Selecting previously unselected package libgcc-4.8-dev:amd64.
Preparing to unpack .../libgcc-4.8-dev_4.8.2-19ubuntu1_amd64.deb ...
Unpacking libgcc-4.8-dev:amd64 (4.8.2-19ubuntu1) ...
Selecting previously unselected package gcc-4.8.
Preparing to unpack .../gcc-4.8_4.8.2-19ubuntu1_amd64.deb ...
Unpacking gcc-4.8 (4.8.2-19ubuntu1) ...
Selecting previously unselected package gcc.
Preparing to unpack .../gcc_4%3a4.8.2-1ubuntu6_amd64.deb ...
Unpacking gcc (4:4.8.2-1ubuntu6) ...
Selecting previously unselected package libc-dev-bin.
Preparing to unpack .../libc-dev-bin_2.19-0ubuntu6_amd64.deb ...
Unpacking libc-dev-bin (2.19-0ubuntu6) ...
Selecting previously unselected package linux-libc-dev:amd64.
Preparing to unpack .../linux-libc-dev_3.13.0-30.55_amd64.deb ...
Unpacking linux-libc-dev:amd64 (3.13.0-30.55) ...
Selecting previously unselected package libc6-dev:amd64.
Preparing to unpack .../libc6-dev_2.19-0ubuntu6_amd64.deb ...
Unpacking libc6-dev:amd64 (2.19-0ubuntu6) ...
Selecting previously unselected package ruby.
Preparing to unpack .../ruby_1%3a1.9.3.4_all.deb ...
Unpacking ruby (1:1.9.3.4) ...
Selecting previously unselected package ruby1.9.1.
Preparing to unpack .../ruby1.9.1_1.9.3.484-2ubuntu1_amd64.deb ...
Unpacking ruby1.9.1 (1.9.3.484-2ubuntu1) ...
Selecting previously unselected package libruby1.9.1.
Preparing to unpack .../libruby1.9.1_1.9.3.484-2ubuntu1_amd64.deb ...
Unpacking libruby1.9.1 (1.9.3.484-2ubuntu1) ...
Selecting previously unselected package manpages-dev.
Preparing to unpack .../manpages-dev_3.54-1ubuntu1_all.deb ...
Unpacking manpages-dev (3.54-1ubuntu1) ...
Selecting previously unselected package ruby1.9.1-dev.
Preparing to unpack .../ruby1.9.1-dev_1.9.3.484-2ubuntu1_amd64.deb ...
Unpacking ruby1.9.1-dev (1.9.3.484-2ubuntu1) ...
Selecting previously unselected package ruby-dev.
Preparing to unpack .../ruby-dev_1%3a1.9.3.4_all.deb ...
Unpacking ruby-dev (1:1.9.3.4) ...
Setting up libasan0:amd64 (4.8.2-19ubuntu1) ...
Setting up libatomic1:amd64 (4.8.2-19ubuntu1) ...
Setting up libgmp10:amd64 (2:5.1.3+dfsg-1ubuntu1) ...
Setting up libisl10:amd64 (0.12.2-1) ...
Setting up libcloog-isl4:amd64 (0.18.2-1) ...
Setting up libgomp1:amd64 (4.8.2-19ubuntu1) ...
Setting up libitm1:amd64 (4.8.2-19ubuntu1) ...
Setting up libmpfr4:amd64 (3.1.2-1) ...
Setting up libquadmath0:amd64 (4.8.2-19ubuntu1) ...
Setting up libtsan0:amd64 (4.8.2-19ubuntu1) ...
Setting up libyaml-0-2:amd64 (0.1.4-3ubuntu3) ...
Setting up libmpc3:amd64 (1.0.1-1ubuntu1) ...
Setting up openssl (1.0.1f-1ubuntu2.4) ...
Setting up ca-certificates (20130906ubuntu2) ...
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (This frontend requires a controlling tty.)
debconf: falling back to frontend: Teletype
Setting up manpages (3.54-1ubuntu1) ...
Setting up binutils (2.24-5ubuntu3) ...
Setting up cpp-4.8 (4.8.2-19ubuntu1) ...
Setting up cpp (4:4.8.2-1ubuntu6) ...
Setting up libgcc-4.8-dev:amd64 (4.8.2-19ubuntu1) ...
Setting up gcc-4.8 (4.8.2-19ubuntu1) ...
Setting up gcc (4:4.8.2-1ubuntu6) ...
Setting up libc-dev-bin (2.19-0ubuntu6) ...
Setting up linux-libc-dev:amd64 (3.13.0-30.55) ...
Setting up libc6-dev:amd64 (2.19-0ubuntu6) ...
Setting up manpages-dev (3.54-1ubuntu1) ...
Setting up libruby1.9.1 (1.9.3.484-2ubuntu1) ...
Setting up ruby1.9.1-dev (1.9.3.484-2ubuntu1) ...
Setting up ruby-dev (1:1.9.3.4) ...
Setting up ruby (1:1.9.3.4) ...
Setting up ruby1.9.1 (1.9.3.484-2ubuntu1) ...
Processing triggers for libc-bin (2.19-0ubuntu6) ...
Processing triggers for ca-certificates (20130906ubuntu2) ...
Updating certificates in /etc/ssl/certs... 164 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d....done.
---> c55c31703134
Removing intermediate container 3a2558904e9b
Step 4 : RUN gem install sinatra
---> Running in 6b81cb6313e5
unable to convert "\xC3" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to US-ASCII for README.rdoc, skipping
unable to convert "\xC3" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to US-ASCII for README.rdoc, skipping
Successfully installed rack-1.5.2
Successfully installed tilt-1.4.1
Successfully installed rack-protection-1.5.3
Successfully installed sinatra-1.4.5
4 gems installed
Installing ri documentation for rack-1.5.2...
Installing ri documentation for tilt-1.4.1...
Installing ri documentation for rack-protection-1.5.3...
Installing ri documentation for sinatra-1.4.5...
Installing RDoc documentation for rack-1.5.2...
Installing RDoc documentation for tilt-1.4.1...
Installing RDoc documentation for rack-protection-1.5.3...
Installing RDoc documentation for sinatra-1.4.5...
---> 97feabe5d2ed
Removing intermediate container 6b81cb6313e5
Successfully built 97feabe5d2ed
docker build ã³ãã³ãã§ -t ãã©ã°ãæå®ããŸãããããã§ã¯æ°ããã€ã¡ãŒãžããŠãŒã¶ ouruser ã«å±ããŠããããšããªããžããªåã sinatra ãã¿ã°ã v2 ã«æå®ããŸããã
ãŸããDockerfile ã®å Žæã瀺ããã . ã䜿ããšãçŸåšã®ãã£ã¬ã¯ããªã«ãã Dockerfile ã®äœ¿çšãæç€ºããŸãã
泚é
Dockerfile ã®ãã¹ãæå®ã§ããŸãã
ããã§æ§ç¯ããã»ã¹ãé²è¡ããŸãããŸã Docker ãè¡ãã®ã¯æ§ç¯ã³ã³ãã¯ã¹ãïŒèš³è 泚ïŒç°å¢ãå 容ç©ã®æå³ïŒã®ã¢ããããŒãã§ããå žåçãªã³ã³ãã¯ã¹ããšã¯ãæ§ç¯æã®ãã£ã¬ã¯ããªã§ãããã®æå®ã«ãã£ãŠãDocker ããŒã¢ã³ãå®éã®ã€ã¡ãŒãžæ§ç¯ã«ããããããŒã«ã«ã®ã³ã³ãã¯ã¹ããããã«å ¥ããããã«å¿ èŠãšããŸãã
ãã®æ¬¡ã¯ Dockerfile ã®åœä»€ãäžè¡ãã€å®è¡ããŸããããããã®ã¹ãããã§ãæ°ããã³ã³ãããäœæããã³ã³ããå
ã§åœä»€ãå®è¡ãã倿Žã«å¯ŸããŠã³ãããããã®ãèŠããã§ããããããã¯å
ã»ã©èŠã docker commit åŠçã®æµãã§ããå
šãŠã®åœä»€ãå®è¡ããããã€ã¡ãŒãž 97feabe5d2ed ãæ®ããŸãïŒæ±ãããããã ouruser/sinatra:v2 ãšã¿ã°ä»ããããŠããŸãïŒããããŠãäœæ¥äžã«äœæãããå
šãŠã®ã³ã³ãããåé€ãããããã«çä»ããŠããŸãã
泚é
127 局以äžã®ã€ã¡ãŒãžã¯ã¹ãã¬ãŒãžã»ãã©ã€ãã«é¢ãããäœæã§ããŸããããã®å¶éãå¹ åºãé©çšãããã®ã¯ãã€ã¡ãŒãžå šäœã®ãµã€ãºã倧ãããªããªããããå€ãã®äººã«æé©åãä¿ãããã§ãã
ããšã¯ãæ°ããã€ã¡ãŒãžããã³ã³ãããäœæã§ããŸãã
$ docker run -t -i ouruser/sinatra:v2 /bin/bash
root@8196968dac35:/#
泚é
ããã§ã¯ã€ã¡ãŒãžäœæã®ç°¡åãªæŠèŠã玹ä»ããŸãããä»ã«ãå©çšå¯èœãªåœä»€ããããŸãããçç¥ããŠããŸããã¬ã€ãã®åŸåã«èªã¿é²ããã°ãDockerfile ã®ãªãã¡ã¬ã³ã¹ãããã³ãã³ãããšã«æŽãªã詳现ãäŸãåç
§ããã ããŸããDockerfile ãæããã«ãèªããããã«ã管çã§ããããã«ããããã«ã¯ Dockerfile ãã¹ããã©ã¯ãã£ã¹ã»ã¬ã€ã ããèªã¿ãã ããã
ã€ã¡ãŒãžã«ã¿ã°ãèšå®Â¶
ã³ããããŸãã¯æ§ç¯åŸã®ã€ã¡ãŒãžã«å¯ŸããŠããã¿ã°ãä»ããããŸããã¿ã°ä»ãã«ã¯ docker tag ã³ãã³ãã䜿ããŸããããã§ã¯ ouruser/sinatra ã€ã¡ãŒãžã«æ°ããã¿ã°ãä»ããŸãããã
$ docker tag 5db5f8471261 ouruser/sinatra:devel
docker tag ã³ãã³ãã«ã¯ã€ã¡ãŒãž ID ã䜿ããŸããããã§ã¯ 5db5f8471261 ã§ãããããŠãŠãŒã¶åããªããžããªåãæ°ããã¿ã°ãæå®ããŸãã
ãããããdocker images ã³ãã³ããäœ¿ãæ°ããã¿ã°ã確èªããŸãã
$ docker images ouruser/sinatra
REPOSITORY TAG IMAGE ID CREATED SIZE
ouruser/sinatra latest 5db5f8471261 11 hours ago 446.7 MB
ouruser/sinatra devel 5db5f8471261 11 hours ago 446.7 MB
ouruser/sinatra v2 5db5f8471261 11 hours ago 446.7 MB
ã€ã¡ãŒãžã®ãã€ãžã§ã¹ãå€Â¶
v2 以äžã®ãã©ãŒãããã®ã€ã¡ãŒãžã«ã¯ãå
容ã«å¯Ÿã㊠digest ãšåŒã°ããèå¥åãå²ãåœãŠå¯èœã§ããäœæããã€ã¡ãŒãžãé·æéã«ããã£ãŠå€æŽããªããã°ããã€ãžã§ã¹ãå€ã¯ïŒå€æŽäžå¯èœãªããïŒäºæ³ã§ããŸããã€ã¡ãŒãžã® digest å€ãäžèŠ§è¡šç€ºããã«ã¯ã--digests ãã©ã°ã䜿ããŸãã
$ docker images --digests | head
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
ouruser/sinatra latest sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf 5db5f8471261 11 hours ago 446.7 MB
2.0 ã¬ãžã¹ããªã«å¯ŸããŠéä¿¡ïŒpushïŒãååŸïŒpullïŒã®å®è¡ã«ãpush ã pull ã³ãã³ãã䜿ããšããã®åºåã«ã€ã¡ãŒãžã®ãã€ãžã§ã¹ãå€ãå«ã¿ãŸãããã®ãã€ãžã§ã¹ãã䜿ã£ãŠããã€ã¡ãŒãžã pull ã§ããŸãã
$ docker pull ouruser/sinatra@cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf
ãã€ãžã§ã¹ãå€ã¯ createãrunãrmi ã³ãã³ãããDockerfile ã§ FROM ã€ã¡ãŒãžã®åç
§ã«ã䜿ããŸãã
ã€ã¡ãŒãžã Docker Hub ã«é信¶
ã€ã¡ãŒãžãæ§ç¯ã»äœæããããšã¯ãdocker push ã³ãã³ãã䜿ã£ãŠ Docker Hub ã«éä¿¡ã§ããŸããããã«ãããã€ã¡ãŒãžãä»äººãšå
±æãããããããªãã¯ã«å
±æããããããã㯠ãã©ã€ããŒãã»ãªããžã㪠ã«ãéä¿¡ã§ããŸãã
$ docker push ouruser/sinatra
The push refers to a repository [ouruser/sinatra] (len: 1)
Sending image list
Pushing repository ouruser/sinatra (3 tags)
. . .
ãã¹ãããã€ã¡ãŒãžãåé€Â¶
Docker ãã¹ãäžã§ã ã³ã³ããã®åé€ ãšåãããã« docker rmi ã³ãã³ãã§ã€ã¡ãŒãžãåé€ã§ããŸãã
äžèŠã«ãªã£ã training/sinatra ã€ã¡ãŒãžãåé€ããŸãã
$ docker rmi training/sinatra
Untagged: training/sinatra:latest
Deleted: 5bc342fa0b91cabf65246837015197eecfa24b2213ed6a51a8974ae250fedd8d
Deleted: ed0fffdcdae5eb2c3a55549857a8be7fc8bc4241fb19ad714364cbfd7a56b22f
Deleted: 5c58979d73ae448df5af1d8142436d81116187a7633082650549c52c3a2418f0
泚é
ãã¹ãããã€ã¡ãŒãžãåé€ããæã¯ãã©ã®ã³ã³ããã察象ãšãªãã€ã¡ãŒãžãå©çšããŠããªãããšã確èªããŠãã ããã
次ã®ã¹ããã¶
ãããŸã§ã¯ãDocker ã³ã³ããå ã«åã ã®ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããæ¹æ³ãèŠãŠããŸãããæ¬¡ã¯ãè€æ°ã® Docker ã³ã³ãããçµã³ä»ããã¢ããªã±ãŒã·ã§ã³ã»ã¹ã¿ãã¯ïŒç©ã¿éãïŒã®æ§ç¯æ¹æ³ãåŠã³ãŸãããã
ã³ã³ããã®ãããã¯ãŒã¯ ã«ç§»åããŸãã
åè
- Build your own images
https://docs.docker.com/engine/userguide/containers/dockerimages/