Docker Compose ããŒãžã§ã³ 2 (å¥å V2) ã®äžè¬æäŸãçºè¡šã§ããããšãå¬ããæããŸãã
2021幎6æã«Compose V2ã®æåã®ããŒãžã§ã³ããªãªãŒã¹ããŸãããçæ§ããã®ãã£ãŒãããã¯ã®ãããã§ãæåã®ããŒã«ã¢ãŠã以æ¥ãæ°å€ãã®æ¹åãè¡ãããéå» 10 ãæã§æ¡çšãçå®ã«å¢å ããŠããŸããV2ã«ã€ããŠè¯ãè©å€ãããããèããŠããŸã! çŸåšãææ°ããŒãžã§ã³ã® Docker Desktop ãå®è¡ããŠãã Docker Compose ãŠãŒã¶ãŒã® 78% ã Compose V2ã䜿çšããŠãããããæ¬çªç°å¢ã®ã¯ãŒã¯ãããŒã§äžè¬å ¬éã§ãããšç¢ºä¿¡ããŠããŸãã
ç§»è¡ã«ã€ããŠç¥ã£ãŠããã¹ãããš
Compose V2 GA ã¯ãã€ã§ãã©ãããæå³ã§ãã?
2022 幎 4 æ 26æ¥ãDocker Compose V2ã® GA ããªãªãŒã¹ãããŸãããæ¬æ¥ãããCompose V2 ã¯ãã¹ãŠã®ããã¥ã¡ã³ãã®æšæºãšãªããCompose V2 㯠Docker Desktop ã®éçºè
åãããã©ã«ãã«ãªããŸãããã ããdocker-compose docker composeãžã®ãšã€ãªã¢ã¹èšå®ãš V2 ã®ãªããã¢ãŠãã¯ãDocker Desktop UI ã䜿çšããããdocker-compose disable-v2 command.
Compose V1 ã¯ã©ããªããŸãã?
Compose V1 ã¯ãµããŒãçµäºãšããŠããŒã¯ãããŸãããåªå 床ã®é«ãã»ãã¥ãªãã£ããããšé倧ãªãã°ä¿®æ£ã®ã¿ããæ¬¡ã®ãã€ã«ã¹ããŒã³ãŸã§V1 ã«é©çšãããŸãããã®ããã°ã®åŸåã§ã¯ãDocker Compose V1ã®ãµããŒãçµäº (EOL) ã®ææ¡ãããã¿ã€ã ã©ã€ã³ã®æŠèŠã説æããŸã â ããã«ã¯ã6 ãæéã®éèŠãªã»ãã¥ãªãã£ãšãã°ã®ä¿®æ£ãšãV2ããªããã¢ãŠãããããã® 1 幎éã®ç¶äºæéãå«ãŸããŸãã
çŸåšãdocker-compose to docker composeã®ãšã€ãªã¢ã·ã³ã°ãåé€ããäºå®ã¯ãããŸãããã質åããäžæãªç¹ãããããŸãããããªãŒãã³ããŒããããã®åé¡ã«é¢ãããã£ãŒãããã¯ããåŸ
ã¡ããŠãããŸããV2ã®äœ¿çšç¶æ³ãç¶ç¶çã«è¿œè·¡ããªãããã£ãŒãããã¯ãåéããå¿
èŠã«å¿ããŠèª¿æŽãè¡ããŸãã
éçºè ãšããŠäœãããå¿ èŠããããŸãã?
ã»ãšãã©ã®å Žåãäœãããå¿
èŠã¯ãããŸãããDocker Desktop ã®ããŒãžã§ã³ 3.4+ã¯Compose V2 ãèªåçã«ã€ã³ã¹ããŒã«ããŸããDocker Desktop ããŒãžã§ã³ . 4ã®å Žå4ã2+ãããã©ã«ãã§ã¯ãdocker-composeæ§æã®ãšã€ãªã¢ã¹ãdocker composeã«æå¹ã«ããŠããŸããããã«ãããV2 ã V1 ã®ããããã€ã³ä»£æ¿åãšããŠäœ¿çšããªãããã¹ã¯ãªããã®æŽæ° (ãã£ããšããŠã) ãæå°éã«æããããšãã§ããŸãã
ãšã€ãªã¢ã·ã³ã°ã䜿çšããŠãããã©ããã¯ãDocker Desktop ã® [äžè¬] èšå®ã¿ãã§ [Docker Compose V2ã䜿çšãã] ãéžæãããŠãããã©ããã確èªããããšã§ç¢ºèªã§ããŸããç§»è¡ã®è©³çްã«ã€ããŠã¯ããã®ããã°ã®ãCompose V1ããŸã 䜿çšããŠããå Žåã®å¯ŸåŠæ¹æ³ããã芧ãã ãããäºææ§ããªãå Žåã¯ããã¡ããããæåºãã ããã
Linuxã䜿çšããŠããå Žåã¯ã©ããªããŸãã?
Docker Desktop for Linux ã¯çŸåšããŒã¿çã§ãCompose V2ãå«ãŸããŠããŸãããŸãã¯ãLinux çšã® Docker Compose V2 ãæåã§ã€ã³ã¹ããŒã«ããããšãã§ããŸããMoby v20.10.13,ã€ã³ã¹ããŒã«ã容æã«ããããã«ããªãã·ã§ã³ã®Docker CLIãã©ã°ã€ã³ãšããŠcompose-pluginãå«ãŸããŠããŸãã詳现ã«ã€ããŠã¯ãããã¥ã¡ã³ããã芧ãã ããã
Docker ããã®ç§»è¡ãè¡ãçç±ãšãV2 ã䜿çšããå¿ èŠãããã®ã¯ãªãã§ãã?
Compose V2 ã¯ããã«ãã³ã³ããã¢ããªã±ãŒã·ã§ã³ãå¹ççã«å®è¡ããã®ã«åœ¹ç«ã€ Compose V1ã®ãã¹ãŠã®æ©èœãæäŸããŸããGo ãžã®ç§»è¡ã¯ãç§ãã¡ãæãæ°ã«å ¥ã£ãããŒãããã ã¢ã€ãã ã® 1 ã€ã§ãããããå€ãã®æ©èœãããè¿ éã«æäŸã§ããããã«ãªããŸããããããã¯Docker CLIã«çµ±åãããDockerã®ããŒã«å šäœã§ã·ãŒã ã¬ã¹ãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãå®çŸããŸãããV2ã§ç޹ä»ãããäž»ãªæ©èœã®è©³çްã«ã€ããŠã¯ããã¡ããã芧ãã ããã
ããããããŠã³ã³ããžã·ã§ã³ã¿ã³ã®ååã¯äœã§ãã?
ãŸã ãããŸãã!GitHubã«ã¢ã¯ã»ã¹ããŠãåéã«ååãä»ããã®ãæäŒã£ãŠãã ããâèªåã®ååãæåºãããããæ°ã«å ¥ãã«æç¥šãããããããã«!

次ã«ãV2 ã«ç§»è¡ããããã»ã¹ãšãã®å©ç¹ã«ã€ããŠèª¬æããŸãã
Compose V1 ããŸã 䜿çšããŠããå Žåã¯ã©ãããã°ããã§ãã?
Compose V2 ãã€ã³ã¹ããŒã«ãããŠããããšã確èªããŸã
Docker Desktop ã«ã¯ãDocker Compose V2ãèªåçã«å«ãŸããŸããããã«ãDocker Desktop for Linux(ããŒã¿ç)ã«ã¯Compose V2ãä»å±ããŠããŸããå¿
èŠã«å¿ããŠã Docker Compose V2 ã Linux ã«æåã§ã€ã³ã¹ããŒã«ããããšãã§ããŸãããŸãã Moby v..20 1013ã«ãªãã·ã§ã³ã® compose-plugin ãå«ãŸããŠããŸãâ Docker CLI ã§ â ã€ã³ã¹ããŒã«ãç°¡ç¥åããŸããCompose V2 㯠Go ãããžã§ã¯ãã§ãããããPython ã©ã€ãã©ãªãšããŠã¯å©çšã§ããªãããšã«æ³šæããŠãã ãããpip ã§ã¯ Compose V1 ã®ã¿ãå©çšããã ããŸãã詳现ã«ã€ããŠã¯ãããã¥ã¡ã³ããåç
§ããŠãã ããã
Alias docker-compose to docker compose
Docker Desktop å
ã§ã[äžè¬] ã¿ãã® [Docker Compose V2ã䜿çšãã] ãªãã·ã§ã³ãåãæ¿ããŸããããã«ãããdocker-composeã³ãã³ãã docker compose ã«ãšã€ãªã¢ã¹ãããŸããV2 ã¯ãæå°éã®ã¹ã¯ãªããæŽæ°ã§ V1 ã®ããããã€ã³ä»£æ¿åãšããŠç°¡åã«äœ¿çšã§ããŸãã

V1 ãš V2 ã®äºææ§ã確ä¿ãã
Compose V1 ãš Compose V2 ã®äºææ§ã確ä¿ããããšã¯ãæ¥åžžã®ã¯ãŒã¯ãããŒãäžæããããšãªã Compose V2ãæŽ»çšããããã«éèŠã§ãã以äžã¯ãCompose V2ã§å°å ¥ããã 2 ã€ã®äž»èŠãªå€æŽç¹ãšããã®è»œæžæé ã§ããããã«ãCompose V2ã«å®è£ ãããŠããªãããã€ãã® Compose V1 ãã©ã°ã廿¢ããŸããããããã®å€æŽã®è©³çްã«ã€ããŠã¯ãäºææ§ã«é¢ããããã¥ã¡ã³ããã芧ãã ããã
| 倿Žå 容 | æœåšçãªåœ±é¿ | ç·©å |
| ãã«ããããã®ãµããŒã㯠V2 å ã§ãã€ãã£ãã§ãããDocker CLI ãšåæ§ã«ããã©ã«ãã§æå¹ã«ãªã£ãŠããŸãã | V2 ã®éçºè ã¯ãããã©ã«ãã§ BuildKit ã䜿çšããŸãã | DOCKER_BUILDKIT=0 ãèšå®ããŠãªããã¢ãŠããã |
| ã³ã³ããåã§ãã¢ã³ããŒã¹ã³ã¢ã®ä»£ããã«ãã€ãã³ãåºåãæåãšããŠäœ¿çšãããããã«ãªããŸããã | ã¹ã¯ãªããã§ã³ã³ããåã«äŸåããŠããå Žåãç Žå£ç倿ŽãçºçããŸãã äžè¬ã«ãã³ã³ããåã«äŸåããªãããã«æ³šæããŠãã ããã | ããããªãã«ããã«ã¯ããã©ã° "âcompatibility " ãæž¡ããŸã |
Docker Compose V2 ã¯ãCompose V1ã®ããããã€ã³ä»£æ¿åã§ããã»ãšãã©ã®å Žåãããã·ã¥ãåé€ããããdocker-composeã®ãšã€ãªã¢ã·ã³ã°ãæå¹ã«ãããšã远å ã®å€æŽãªãã§docker composeããŠç¶è¡ã§ããŸããç§»è¡äžã«åé¡ãçºçããå Žåã¯ãCompose ã®åé¡ãªããžããªã«ãã£ãŒãããã¯ãéä¿¡ããŠããã ããã°ãããã«å¿ããŠåªå
é äœãä»ããŸãã
Docker Compose V1 ã«ã€ããŠã¯ã©ãã§ãã?
Compose V2 ã«ç§»è¡ããæéãååã«ç¢ºä¿ããŠãã ããã Docker Compose V1 ãããã«å»æ¢ããããšã¯ãªããéçºè ã¯äžæçã« V1 ã«æ»ãããšãã§ããŸãã
Docker Compose V2 ã®åæ¥ãããªãã«ãšã£ãŠäœãæå³ãããã¯æ¬¡ã®ãšããã§ãã
- Docker Compose V2 ãã©ã³ãã GitHub ã®æ¢å®ã«ãªããŸããã
- Docker Compose V1ã¯åŒãç¶ããmasterããã©ã³ãã«ãããŸããÂ
- Compose V1 ã¯éæšå¥šãšããŠããŒã¯ãããŠãããæ¬¡ã®ãã€ã«ã¹ããŒã³ãŸã§ãé倧床ã®é«ãè匱æ§ã®ã¿ã«ããããé©çšããããé倧ãªãã°ãä¿®æ£ããŸãã
- éçºè
ã¯ãdocker compose ã䜿çšããããã«ãåŒãç¶ããšã€ãªã¢ã¹ (
docker-compose) ã䜿çšã§ããŸãã - éçºè
ã¯ãDocker Desktop UIãŸãã¯
docker-compose disable-v2ã³ãã³ãã䜿çšããŠãåŒãç¶ãV2ããªããã¢ãŠãã§ããŸãã - Compose V1ã¯ãªãŒãã³ãœãŒã¹ã®ãŸãŸã§ãããæ°æ©èœã®éçºã¯çµäºããŠããŸãã ã³ãã¥ããã£ããæåºããããã°ä¿®æ£ãã»ãã¥ãªãã£ããããåŒãç¶ãç£èŠããå¿ èŠã«å¿ããŠããŒãžããŸãã
ææ¡ããã Compose V1 ã®ãµããŒãçµäºã¿ã€ã ã©ã€ã³
ãããŸã§ã« Compose V2 ãžã®ç§»è¡ã倿°æåããŠããããšãèžãŸããDocker Compose V1 ã®ãµããŒãçµäº (EOL) ã«ã€ããŠæ¬¡ã®ã¿ã€ã ã©ã€ã³ãäœæããŸããã

GitHub ããŒããããã®åé¡ãéããŠãã£ãŒãããã¯ãå ±æããããšããå§ãããŸãããã®ãã£ãŒãããã¯ã¯ãV2ã®äœ¿çšç¶æ³ãšäžŠè¡ããŠç£èŠããããã«å¿ããŠèª¿æŽãè¡ããŸãã
Compose V2 ã®å©ç¹ã¯äœã§ãã?
1)ããã«ãŒCLIå ã®æ°æ©èœã®é«éé ä¿¡
Compose V2ãžã®ç§»è¡ã«ã¯ãå€ãã®äŸ¿å©ãªæ°æ©èœãä»å±ããŠããŸãã
- GPU ãã·ã³ã®ãµããŒã â Docker ãã¹ãã« GPU ããã€ã¹ã®äºçŽãå«ãŸããŠããå Žåãããã³ Docker ããŒã¢ã³ãããã«å¿ããŠèšå®ãããŠããå ŽåãCompose ãµãŒãã¹ã§ã¯ GPU ããã€ã¹ã®äºçŽãå®çŸ©ã§ããŸãã
- ãããã¡ã€ã«ã®ãµããŒã â ãããã¡ã€ã«ã䜿çšãããšãéžæçãªãµãŒãã¹ã®æå¹åãéããŠãCompose ã¢ããªã±ãŒã·ã§ã³ ã¢ãã«ãããŸããŸãªçšéãç°å¢ã«é©å¿ãããããšãã§ããŸãã
docker composels ã³ãã³ãã§ãCompose ã¢ããªã®å®å šãªãªã¹ãã衚瀺ã§ããããã«ãªããŸãããdocker composecp ã³ãã³ãã䜿çšãããšããµãŒãã¹ã»ã³ã³ãããšããŒã«ã«ã»ãã¡ã€ã«ã»ã·ã¹ãã ã®éã§ãã¡ã€ã«ããã³ãã©ã«ããŒãã³ããŒã§ããŸãã
ãããã®æ©èœã¯ãDocker CLI ãä»ããŠåºè·ãããŸãã å Docker ãã¹ã¯ãããã¯ããã¹ãŠã®æŽæ°ã CLI ã«èªåçã«é©çšããããã管çã¯ãŒã¯ããŒãã軜æžãããŸãã
2)çç£ãžã®ã·ãŒã ã¬ã¹ãªé
ãããžã§ã¯ããç°¡åã«äœæããAWSãŸãã¯ECSç°å¢å ããŸãã¯Azure ACIå ã§çŽæ¥å®è¡ã§ãããšãããã©ãã§ãããããããã¯ãæ°ããã¯ã©ãŠãçµ±åã®ãããã§ãCompose V2ã§è¡ãããšãã§ããŸãã
ããŒã«ã«éçºã« Docker Compose ã䜿çšããéçšç°å¢ã« ACI ãŸã㯠ECS ã䜿çšããå Žåãã¯ã©ãŠããžã® Docker Compose ã¢ããªã±ãŒã·ã§ã³ã®ãããã€ãã¯ããã«ç°¡åã«ãªããŸããã ã¯ã©ãŠããã©ãããã©ãŒã äžã§ã¢ããªã±ãŒã·ã§ã³ããã¢ãããããã«ã¯ãDocker ã³ã³ããã¹ããåãæ¿ããAmazon ECS ãŸã㯠Microsoft ACI ã§ã¢ããªãèµ·åããã ãã§ãã
V2å ã® Compose 仿§ã¯ãããå¯èœã«ããŸããCompose 仿§ã§ã¯ããã©ãããã©ãŒã ã«äŸåããªããã«ãã³ã³ãã ã¢ããªã±ãŒã·ã§ã³ãå®çŸ©ã§ããŸããä»ã®ããã°ã©ã ã¯ããã®ä»æ§ã䜿çšããŠããããã®ãã¡ã€ã«ãæ€èšŒããå®è¡ããããšãã§ããŸããããã«ãããGo ã® Compose ãã¡ã€ã«ã®è§£æãšè¡šçŸã®å®è£ ã§ãã compose-go ãå°å ¥ãããŸããããã¯ãAmazon ECSãMicrosoft ACIããŸã㯠Kubernetes çµ±åã䜿çšããå®è£ ã§å ±éã§ãã
3)Goã§å質ãªDockerãšã³ã·ã¹ãã ãäœæãã
Compose V2 ã«å ç«ã¡ãPython ã§ Docker Compose V1 ãäœæããŸãããããã㯠Docker ãšã³ã·ã¹ãã å ã®å€ãå€ã§ãã éã«ãCompose V2 㯠Go ã§èšè¿°ãããŸãã ãããã£ãŠãV2 ã¯ãMobyãCLIããŸãã¯ä»»æã® Go ããŒã¹ã®ãããžã§ã¯ãããã³ãŒãããã³ããŒåã§ããŸãã Docker Compose ã® Go ãžã®ç§»è¡ã«ãããPython ã®æ°æ©èœããã°ä¿®æ£ãæžãçŽãå¿ èŠããªããªããŸããã
Docker CLI ããã®ä¿®æ£ã Compose ãšããç°¡åã«çµ±åã§ããããã«ãªããŸããã ããã«ãããDockerãšã³ã·ã¹ãã å šäœã§å ±ææ©èœããã¹ãããããã®æšæºçãªå ŽæãæäŸãããã·ãŒã ã¬ã¹ãªåå©çšãä¿é²ãããŸãã ãããã£ãŠãããŒãªã³ã°å šäœã§ããå€ãã®äŸ¡å€ãè¿ éã«æäŸã§ããŸãã ãŸããBuildKit ãªã©ã®ä»ã® Docker ããŒã«ãã Compose ã«ã¢ããããŒããç°¡åã«è¿œå ããããšãã§ããŸãã
ããšãã°ãCompose ãš Docker CLI ã®äž¡æ¹ã§ run ã³ãã³ããš exec ã³ãã³ãã«åãã³ãŒãã䜿çšããããã«ãªã£ããããDocker ãš Docker ã®äž¡æ¹ãå®è¡ããªãããååã«ãã¹ããããåäœãä¿ædocker composeããã°åºåã«è³ããŸã§ãã¹ãŠãäžè²«æ§ãä¿ã€ãããéçºè
ã¯ãã°åºåãç°¡åã«åãæ¿ããããšãã§ããŸãã
4)ãã€ããªã®äœæã«ããæŽæ°ãšäŸåé¢ä¿ã®ç®¡çã®å®¹æå
Goã䜿çšãããšã以åã¯äžå¯èœã ã£ãéçãã€ããªããªãªãŒã¹ã§ããããã«ãªããŸãã(GNU / Linuxã§ã®glibcãšlibmuslã®ãããªããã€ãã®åé¡ãåé¿ã§ããŸã)ãããã¯ãPython ã«ã³ã³ãã€ã©ãçµã¿èŸŒãŸããŠããªãããã§ããããã«ãããäž»èŠãªãã©ãããã©ãŒã (GNU/LinuxãmacOSãWindows) çšã®ãã€ããªãçæããããã« pyinstaller ã«é Œãå¿
èŠããããŸãããããç°ç𮿷·åšã®ãã©ãããã©ãŒã ã®å ŽåãV1 㯠PyPI (pip installåäœ) ã«äŸåããŠãããããäŸåé¢ä¿ã®ç®¡çãè€éã«ãªããŸããããŸããŸãªäŸåé¢ä¿ã®çµã¿åãããæ¢ã«ã€ã³ã¹ããŒã«ãããŠããå¯èœæ§ããããŸãã
Go èšèªã¯ã$GOOSã$GOARCHãå Žåã«ãã£ãŠã¯ $GOARM ãéããŠã¯ãã¹ã³ã³ãã€ã«ã®ããã¯ãè§£é€ããŸã (å®å
šãªãªã¹ãã«ã€ããŠã¯ãGo ã®ããã¥ã¡ã³ããåç
§ããŠãã ãã)ããã®åŸãRaspberry Piã§éçãã€ããªã䜿çšããŠãpip installãåé¿ã§ããŸãã
æåŸã«ããã€ãã£ãã«ç©äºãå®è¡ããã®ã¯ã¯ããã«é«éã§ã!
5.äœæãã¡ã€ã«ãªãã§ã³ãã³ããå®è¡ããŸã
æåŸã«ãã³ã³ããã©ãã«ã䜿çšãããšãYAMLãã¡ã€ã«ã«å«ãŸããæ
å ±ãåäœæã§ããŸãããã®æ©èœã䜿çšãããšãã³ãã³ãã©ã€ã³ã« âproject-name ã远å ããã ãã§å®è¡äžã®ãããžã§ã¯ãã管çã§ãããããå
ã® Compose ãã¡ã€ã«ãç°å¢å€æ°ãªãã§ docker compose start/stop/pause/down/ps/exec⊠ãªã©ãå®è¡ã§ããŸãã以åã«èšå®ããæ¢åã®ãããžã§ã¯ãåããâproject-name (-p)ããšå
¥åããã ãã§ãã
ããšãã°ã次ã®ã³ãã³ãã§ã¯ããããžã§ã¯ãåã®ãã©ã«ããŒã«ããå¿ èŠã¯ãªããCompose ãã¡ã€ã«ãçŸåšã®ãã£ã¬ã¯ããªã«é 眮ããå¿ èŠããããŸããã
$ docker compose --project-name myproject down
Docker CLIã®ãã©ã°ã€ã³ãã¡ããªãŒã«å ãã£ãDocker Composeã®é²åããµããŒãããŠããã ãããããšãããããŸãã Compose V2 ã®ãŠãŒã¶ãŒ ãšã¯ã¹ããªãšã³ã¹ãåŒãç¶ã匷åã§ããããšãå¬ããæããŸãã æ¬¡å Docker Compose ã䜿çšãããšãã¯ããã€ãã³ãã¹ããŒã¹ã«çœ®ãæã㊠V2 ããã¹ãããŸãã ããã¯ãããšåããããç°¡åã§ã!