Docker Composeã¯ãã¢ããªã±ãŒã·ã§ã³ãèšè¿°ããããã«éçºè ã«éåžžã«äººæ°ããããŸãã å®éãGitHub ã«ã¯ 300,000 ãè¶ ãã Docker Compose ãã¡ã€ã«ããããŸãã docker-compose.yml ãã¡ã€ã«ã«èšè¿°ãããäžé£ã®ãµãŒãã¹ã䜿çšãããšã1 ã€ã®ã³ãã³ããå®è¡ããã ãã§ãè€éãªãã«ããµãŒãã¹ ã¢ããªã±ãŒã·ã§ã³ (ãŸãã¯åçŽãªåäžãµãŒãã¹ ã¢ããª) ã Docker ã§ç°¡åã«èµ·åã§ããŸãããã®äœ¿ããããã«ãããDocker Composeã¯ããããžã§ã¯ãããã°ããéå§ããæ¹æ³ãæ±ããŠããéçºããŒã ã«æé©ã§ãã
æéã®çµéãšãšãã«ãComposeã¯é²åããã¬ããªã«ã®æ°ãã¡ã¢ãªãªãœãŒã¹ã®å¶çŽãã«ã¹ã¿ã syslogãµãŒããŒã®æå®ãªã©ãåãã¢ããªã±ãŒã·ã§ã³ãæ¬çªç°å¢ã«ãããã€ãããšãã«åœ¹ç«ã€å€ãã®æ©èœã远å ãããŠããŸãã ãã ãããããã®å±æ§ã¯ãç¬èªã®ç°å¢ã«åºæã®ãã®ã«ãªãå¯èœæ§ããããŸãã ãã®ç¶æ³ã«å¯ŸåŠããã«ã¯ããŸããŸãªæ¹æ³ããããŸãããæãäžè¬çãªã®ã¯ã³ããŒã¢ã³ãããŒã¹ãã«äŸåããããšã§ãã ããšãã°ãç°ãªãç°å¢ã§å®è¡ãããŠããåãã¢ããªã±ãŒã·ã§ã³ã«å¯ŸããŠè€æ°ã®Composeãã¡ã€ã«ãç¶æããããšã¯ããªãäžè¬çã§ããããã«ãããæ¬¡ã® 2 ã€ã®åé¡ãçºçããŸãã
- Dockerã€ã¡ãŒãžã¯åžžã«å ±æããŠããŸããããããã䜿çšãããã«ããµãŒãã¹ã¢ããªã±ãŒã·ã§ã³ãå ±æããé©åãªæ¹æ³ã¯ãããŸãã
- Composeãã¡ã€ã«ãäžå¿ã«éçºè ãšãªãã¬ãŒã¿ãŒã®éã§å ±åäœæ¥ãè¡ãããšã¯å°é£ã§ãã ããã«ãããã¢ããªã±ãŒã·ã§ã³ãã³ãŒãã§èšè¿°ããããšã®äž»ãªå©ç¹ã® 1 ã€ã§ãããéçºè ãšãªãã¬ãŒã¿ãŒã 1 ã€ã®èª¬æãå ±æããéçšç°å¢ã«ç§»è¡ããåã«æ§æã®åé¡ãæ€åºã§ãããšããå©ç¹ã軜æžãããŸãã
ããã«ãŒã¢ããªã®ç޹ä»
ããã«å¯ŸåŠãã 1 ã€ã®æ¹æ³ã¯ãCompose ã«è¿œå ãããããŒã«ãæ§ç¯ããŠãå ±æãšã³ã©ãã¬ãŒã·ã§ã³ã«ããã«äœ¿ããããããããšã§ãã ããã¯å®éšçãªãã®ã§ãããéåžžã«é²è¡äžã®äœæ¥ ã§ãããæ©æå°å ¥è ããã®ãã£ãŒãããã¯ãšæèŠãããã ããããšèããŠããŸããããã«ãããæ¬¡ã®ããšãè¡ãããŸãã
- äœæããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ã Docker Hub ããã³ DTR ã§å ±æã§ããããã«ãã
- ã¢ããªã±ãŒã·ã§ã³ã®èª¬æãšç°å¢ããšã®èšå®ã®éã®æžå¿µäºé ã®ãã匷åãªåé¢ããµããŒãããŸã
å®è£ ã¯ãããã€ãã®è¿œå ã®ã¡ã¿ããŒã¿ãã¡ã€ã«ãšå°ããªã³ãã³ãã©ã€ã³ããŒã«ã§æ§æãããŠããŸãã ç°¡åãªäŸã瀺ããŠããŸãã
次ã®äœæãã¡ã€ã«ãäœæããŸãã èšå®ãããããŒãã§ããããããšãã«æå®ãããããã¹ããåºåããHTTPãµãŒããŒãèµ·åããŸãã
version: '3.6'
services:
 hello:
   image: hashicorp/http-echo
   command: ["-text", "hello world"]
   ports:
     - 5678:5678
ã€ã³ã¹ããŒã«ããã docker-appããã®Composeãã¡ã€ã«ã«åºã¥ããŠã¢ããªã±ãŒã·ã§ã³ããã±ãŒãžãäœæããŸãããã
$ docker-app init --single-file hello $ ls docker-compose.yml hello.dockerapp
ã¢ããªã±ãŒã·ã§ã³ ããã±ãŒãžã¯åãªãããã¹ã ãã¡ã€ã« (ãŸãã¯ãã£ã¬ã¯ããª) ã§ããããã®å Žå hello.dockerapp㯠ãšåŒã°ããŸãã æ¬ããã±ãŒãž ã«ã¯ 3 ã€ã® YAML ããã¥ã¡ã³ããå«ãŸããŸã
- äžéšã®ã¡ã¿ããŒã¿
- äœæãã¡ã€ã«
- ã¢ããªã±ãŒã·ã§ã³ã®ããã€ãã®èšå®
次ã®ããã«ãªããŸãã
# ãã®ã»ã¯ã·ã§ã³ã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ã¡ã¿ããŒã¿ãå«ãŸããŠããŸãã ææ°ããŒãžã§ã³: 0.1.0 åå: ããã«ã¡ã¯ 説æ: "" ã¡ã³ããïŒ - åå:ããªãã®ãŠãŒã¶ãŒå  é»åã¡ãŒã«: "" ã¿ãŒã²ããïŒ Â çŸ€ã:æ¬åœ  Kubernetes: true -- # ãã®ã»ã¯ã·ã§ã³ã«ã¯ãã¢ããªã±ãŒã·ã§ã³ãµãŒãã¹ãèšè¿°ãã Compose ãã¡ã€ã«ãå«ãŸããŠããŸãã ããŒãžã§ã³: '3.6' ãµãŒãã¹ïŒ  ããã«ã¡ã¯ïŒ    ç»å:ãã·ã³ãŒã/ HTTP-ãšã³ãŒ    ã³ãã³ã: ["-ããã¹ã", "ããã«ã¡ã¯äžç"]    ããŒãïŒ Â Â Â Â Â - 5678:5678 -- # ãã®ã»ã¯ã·ã§ã³ã«ã¯ãã¢ããªã±ãŒã·ã§ã³èšå®ã®ããã©ã«ãå€ãå«ãŸããŠããŸãã {}
Â
èšå®ã»ã¯ã·ã§ã³ãç·šéã ( ã眮ãæã {}ãŠ)ãã¢ããªã±ãŒã·ã§ã³ã«æ¬¡ã®ããã©ã«ãå€ã远å ããŸãããã
port: 5678
text: hello development
version: latest
次ã«ã[ãã¡ã€ã«ã®äœæ]ã»ã¯ã·ã§ã³ã倿Žããããã€ãã®å€æ°ã远å ããŸãã
version: '3.6'
services:
 hello:
   image: hashicorp/http-echo:${version}
   command: ["-text", "${text}"]
   ports:
     - ${port}:5678
æåŸã«ãæäŸãããããã©ã«ãå€ã§Composeãã¡ã€ã«ãã¬ã³ããªã³ã°ããããšã«ããããã¹ãŠãæ©èœããŠããããšããã¹ãã§ããŸãã
$ ããã«ãŒã¢ããªã¬ã³ããªã³ã° ããŒãžã§ã³: "3.6" ãµãŒãã¹ïŒ  ããã«ã¡ã¯ïŒ    åœä»€ïŒ    --ããã¹ã    - ããã«ã¡ã¯éçº Â Â Â ç»å:ãã·ã³ãŒã/http-ãšã³ãŒ:ææ°    ããŒãïŒ Â Â Â ã¢ãŒã:å ¥å      ã¿ãŒã²ãã: 5678      çºè¡æ¥: 5678      ãããã³ã«: TCP
Â
倿°ãèšå®å€ã«çœ®ãæããããŠããããšã«æ³šæããŠãã ããã ãã®åŸããã®äœæãã¡ã€ã«ãä»ã®ãã¡ã€ã«ãšåãããã«äœ¿çšã§ããŸãã ããšãã°ããã£ã¹ã¯ã«ä¿åããããçŽæ¥ãã€ãdocker stackdocker-composeããããã¢ããªã±ãŒã·ã§ã³ãèµ·åãããããããšãã§ããŸãã
$ docker-app render | docker-compose -f - up
ããã¯ãããé¢çœããªããšããã§ãã ãªãã·ã§ã³ã䜿çšã㊠--setãå®è¡æã«ãããã®èšå®ãäžæžãã§ããŸãã å¥ã®ãªãã·ã§ã³ãæå®ããŠãã¬ã³ããªã³ã°ãå床å®è¡ããŠã¿ãŸãããã
$ docker-app render --set version=0.2.3 --set port=4567 --set text="hello production" version: "3.6" services:  hello:    command:    - -text    - hello production    image: hashicorp/http-echo:0.2.3    ports:    - mode: ingress      target: 5678      published: 4567      protocol: tcp
çµæã® Compose ãã¡ã€ã«ã®ããŒããšããŒãžã§ã³ã«å¯Ÿãã倿Žã«æ³šæããŠãã ããã
å¿ èŠã«å¿ããŠãã¹ã¿ã³ãã¢ãã³æ§æãã¡ã€ã«ãäœæããŠããããã®èšå®ãä¿åããããšãã§ããŸãã æ¬¡ã®å 容㧠' prod.ym l' ãäœæããŸãããã
version: 0.2.3 text: hello production port: 4567
次ã«ã次ã®ããã«ããã®æ§æãã¡ã€ã«ãå«ãComposeãã¡ã€ã«ã衚瀺ã§ããŸãã
$ docker-app render -f prod.yml
ããã«ãããç°å¢ããšã«åå¥ã®èšå®ãã¡ã€ã«ãç°¡åã«äœæã§ããComposeãã¡ã€ã«å šäœãè€è£œããå¿ èŠããªããªããŸãã
ãªããžããªã«ã¯ãhello worldãè¶ ããŠç§»åãããå Žåã«ã ããã«é«åºŠãªäŸãããã€ããããŸãã
Docker Composeã®ç°å¢å€æ°ãµããŒãã䜿çšããŠäžèšãšåæ§ã®ãã®ãå®è£ ã§ããŸãããåªãããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãæäŸããã«ã¯ç¬èªã®ããŒã«ãäœæããå¿ èŠããããŸãã ãã ããäžèšã®èŠåãæŽã£ãŠãããšããã®äžã«ãã£ãšè峿·±ããã®ãæ§ç¯ã§ããŸãã ããšãã°ã以äžã®ãããªéåžžã«è峿·±ãã€ã³ããã¹ãã¯ã·ã§ã³ããŒã«ãæ§ç¯ããããšãã§ããåçŽãªå€æ°çœ®æãè¶ ããŠãããè€éãªãã³ãã¬ãŒãã«ç§»è¡ããèšç»ããããŸãã
ã¢ããªã±ãŒã·ã§ã³ ããã±ãŒãžã®æ€æ»ãšå±é
docker-app ã¯ãããŸããŸãªèšå®ã§Composeãã¡ã€ã«ãã¬ã³ããªã³ã°ããæ¹æ³ãæäŸããã ãã§ã¯ãããŸããã ãŸããããããšå¯Ÿè©±ããããã®ããã€ãã®äŸ¿å©ãªãŠãŒãã£ãªãã£ãä»å±ããŠããŸãã ããšãã°ã誰ããããªãã«.dockerappææž¡ããå Žåãããã«é¢ããæ
å ±ãç°¡åã«çºèŠã§ããç¹ã«ããã±ãŒãžã³ãŒããèªãŸãªããŠãå®è¡æã«äœ¿çšå¯èœãªèšå®ãèŠã€ããããšãã§ããŸãã
$ ããã«ãŒã¢ããªæ€æ» ããã«ã¡ã¯0.1.0 ã«ãã£ãŠç¶æããã: ã¬ã¬ã¹ Docker ã¢ããªã±ãŒã·ã§ã³ ããã±ãŒãžã®äŸã ããã©ã«ãã®èšå® ------- ------- ããŒã 8080 ããã¹ãããã«ã¡ã¯äžç ããŒãžã§ã³ ææ°
ã¢ããªã±ãŒã·ã§ã³ã®ããŒãžã§ã³ããããã€ããæºåãã§ãããããµãã³ãã³ãã䜿çšããŠããã〠deployã§ããŸãã ããã¯ã³ãã³ããšãŸã£ããåãããã«æ©èœããããã docker stack deployå€ãã®äººã«éŠŽæã¿ã®ããã¯ãã§ããããšãã°ãDocker Desktop ãŸã㯠Docker EE ã䜿çšããŠããå Žåã¯ãå
¬éãããŠããèšå®ã®äžéšããªãŒããŒã©ã€ãããªãããã¢ããªã±ãŒã·ã§ã³ã Kubernetes ã«ãããã€ã§ããŸãã
$ docker-app deploy --set port=4567 --orchestrator=kubernetes
docker-app ã«ã¯ãçµã¿èŸŒã¿ã®ãã«ãæ
å ±ã§ããŸãã¯ãã©ããŒã¢ããã®ããã°æçš¿ãåŸ
ã€ããšã§èŠã€ããããšãã§ããããã䟿å©ãªããŒã«ãçµã¿èŸŒãŸããŠããŸãã
å°äœã
æ¬æ¥ããã¹ãŠã®DockerãŠãŒã¶ãŒåãã®å®éšçãªãŠãŒãã£ãªãã£ãšããŠãªãªãŒã¹ docker-app ããŸãã åæã®ãŠãŒã¶ãŒãã£ãŒãããã¯ã«åºã¥ããŠè¿
éã«å埩ããã³ãŒããã¢ã€ãã¢ãæäŸãããDockerã³ãã¥ããã£ã®äººã
ãšååããããšãç®æããŠããŸãã ããã¯ãçŸåšã® docker-compose ãŸã㯠docker ã¹ã¿ãã¯ã³ãã³ãã眮ãæããããšãæå³ãããã®ã§ã¯ãããŸããã
ç§ãã¡ã¯ docker-appæ¢æ±ãããã¢ã€ãã¢ããããããããŸãã Docker Hubã§ã®ã¢ããªã±ãŒã·ã§ã³ã®å
±æã¯ãã§ã«ãµããŒããããŠããŸããããããæ¡åŒµããããã®ã¢ã€ãã¢ã¯ãããããããŸãã èªå·±å®çµåã®ã¢ããªã±ãŒã·ã§ã³ã€ã³ã¹ããŒã©ãŒããããšãã°ãªãã©ã€ã³ã€ã³ã¹ããŒã«ã®ãŠãŒã¹ã±ãŒã¹ããµããŒãã§ããè峿·±ãææ®µã§ãã ãã®ããŒã«ã§ã¯ãããè€éãªãã³ãã¬ãŒããªãã·ã§ã³ãããçšåºŠãµããŒãããŠããŸããããªãªãŒã¹ããŒãžã§ã³ã§ã¯ãŸã å©çšå¯èœã«ããŠããŸããã ä»éããã¡ã¿ããŒã¿ã¯ãã€ã³ã¹ããŒã«ããã³ç®¡çããŒã«ããããã¥ã¡ã³ãããã¹ããŠãŒãã£ãªãã£ãŸã§ãããŸããŸãªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãèªåçæããããã®å€ãã®æ©äŒãæäŸããŸãã ããªããèŠãããã®ãç§ãã¡ã«ç¥ãããŠãã ããã
èå³ã
èå³ãããã°ãhttps://github.com/docker/app ã®GitHubãªããžããªã«ã¢ã¯ã»ã¹ããŠãã ãããåºæ¬çãªããã¥ã¡ã³ããšããã€ãã®äŸãããã³ææ°ãªãªãŒã¹(WindowsãmacOSããŸãã¯Linuxçš)ãšã¢ããªã±ãŒã·ã§ã³ã®ãœãŒã¹ã³ãŒããããŠã³ããŒãããæé ããããŸãã質åãã¢ã€ãã¢ãåé¡ã¬ããŒãããŸãã¯æ©èœãªã¯ãšã¹ããå«ããªããžããªå ã®åé¡ãéããŠãã ããã
Docker EE ã®ã客æ§ã§ãCompose ããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ã®ç®¡çããéçºè
ãšãªãã¬ãŒã¿ãŒéã®ã¯ãŒã¯ãããŒã®åé¡ãžã®å¯ŸåŠã«é¢å¿ãããå Žåã¯ãå¶æ¥æ
åœè
ãããåãåãããã ããã docker-appçŸåšãDocker EEãšé£æºããŠãããä»ã®è峿·±ãçµ±åã®æ©äŒãç©æ¥µçã«æ€èšããŠããŸãã
詳现æ å ±ïŒ
- ç»é²ãã å©çšå¯èœãªããŒã¿çã«ã¢ã¯ã»ã¹ããçŸåšã®ããŒãžã§ã³ã®Dockerãã¹ã¯ããããããŠã³ããŒãããŸãã ãã㯠å㯠ãŠã£ã³ããŠãº10 仿¥ãKubernetesã䜿çšãããªãã·ã§ã³ãå«ã¿ãŸãã