Hexletã§ã¯ãDockerã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³èªäœãšé¢é£ãµãŒããŒãèµ·åããå®éã®ããã°ã©ãã³ã°æŒç¿ã§ã«ã¹ã¿ã ã³ãŒããå®è¡ããŠããŸãã ãããã®è»œéã³ã³ããããªããã°ããããã®ã¿ã¹ã¯ã«å¯ŸåŠããããšã¯ã¯ããã«å°é£ã«ãªããŸãã Dockerã¯çŽ æŽããããã¯ãããžãŒã§ãããäºæããªãåé¡ãçºçããå ŽåããããŸãã ãããã®åé¡ã®1ã€ïŒããã³ãã®è§£æ±ºçïŒã¯ãPhusionããã°ïŒPhusion Passengerã®äœæè ã§ãïŒã§èª¬æãããŠããŸããä»æ¥ããã®ç¿»èš³ãå ¬éããŠããŸãã
çŽ1幎åãDockerãããŒãžã§ã³0.6ã§ãã£ããšãã«ãBaseimage-dockerãåããŠå°å ¥ããŸããã ããã¯ãDockerçšã«ç¹å¥ã«å€æŽãããæå°éã®Ubuntuã€ã¡ãŒãžã§ãã 人ã ã¯ãã®åºæ¬çãªã€ã¡ãŒãžãDockerã¬ãžã¹ããªããååŸããã€ã¡ãŒãžã®ããŒã¹ãšããŠäœ¿çšã§ããŸãã
ç§ãã¡ã¯Dockerã®åæãŠãŒã¶ãŒã§ãããCIã䜿çšããŠãããŒãžã§ã³1.0ã®ãªãªãŒã¹ããããã£ãšåã«äœæ¥ç°å¢ãäœæããŸããã Dockerã®ååã«åºæã®åé¡ã解決ããããã®åºæ¬çãªã€ã¡ãŒãžãäœæããŸããã ããšãã°ãDockerã¯ãåããã»ã¹ãæ£ããåŠçããç¹å¥ãªinitããã»ã¹ã®äžã§ããã»ã¹ãéå§ããªãããããŸã³ãããã»ã¹ãå€æ°ã®åé¡ãåŒãèµ·ããå¯èœæ§ããããŸãã Dockerã¯syslogã«å¯ŸããŠãäœãããªããããéèŠãªã¡ãã»ãŒãžã倱ãããå¯èœæ§ããããŸãã ãªã©ãªã©ã
ããããå€ãã®äººãç§ãã¡ãçŽé¢ããŠããåé¡ãç解ããŠããªãããšãããããŸããã ã¯ãããããã¯ããªãäœã¬ãã«ã®Unixã·ã¹ãã ã¡ã«ããºã ã§ããã誰ããç解ããŠããããã§ã¯ãããŸããã ãããã£ãŠããã®æçš¿ã§ã¯ãç§ãã¡ã解決ããæãéèŠãªåé¡ãPID 1ãŸã³ãã®åç²åé¡ã«ã€ããŠèª¬æããŸãã
ããã¯å€æããïŒ
- ç§ãã¡ã解決ããåé¡ã¯å€ãã®äººã ã«é¢é£ããŠããŸãã
- å€ãã®äººã¯èªåã®ååšãç¥ããªãã®ã§ãããæç¹ã§äºæããªãåé¡ãå¿ ãçºçããŸãïŒããŒãã£ãŒã®æ³åïŒã
- 誰ããèªåã§åé¡ã解決ããå Žåãããã¯éåžžã«ç¡å¹ã«ãªããŸãã
ãã®ããã誰ã§ã䜿çšã§ãããŠãããŒãµã«ããŒã¹ã€ã¡ãŒãžã§ããBaseimage-dockerã§æ±ºå®ããŸããã ãã®ã€ã¡ãŒãžã¯ãDockerã€ã¡ãŒãžã®éçºè ã«ïŒå¿ èŠãšæãããããã«ïŒå¿ èŠãªå€æ°ã®äŸ¿å©ãªããŒã«ãè¿œå ããŸãã ãã¹ãŠã®ç»åã®ããŒã¹ãšããŠBaseimage-dockerã䜿çšããŸãã
ã³ãã¥ããã£ã¯ç§ãã¡ã®ä»äºãæ°ã«å ¥ã£ãŠããŸããç§ãã¡ã®ç»åã¯ãUbuntuãšCentOSã®å ¬åŒç»åã«ç¶ããŠãDockerã¬ãžã¹ããªã§3çªç®ã«äººæ°ããããŸãã
PID 1ã®åé¡ïŒãŸã³ãã®åé
Unixã®ãã¹ãŠã®ããã»ã¹ã¯ãããªãŒåœ¢åŒã§è¡šç€ºãããŸãã åããã»ã¹ã¯åããã»ã¹ãçæããåããã»ã¹ã«ã¯æäžäœïŒãŸãã¯ã«ãŒãïŒãé€ã芪ããããŸãã
ã«ãŒãããã»ã¹ã¯initã§ãã ã·ã¹ãã ã®èµ·åæã«ã«ãŒãã«ã«ãã£ãŠèµ·åãããŸãã initã¯ãSSHããŒã¢ã³ãDockerããŒã¢ã³ãApache / Nginxã®èµ·åãGUIã®èµ·åãªã©ãã·ã¹ãã ã®æ®ãã®éšåãèµ·åããŸãã 次ã«ããããããåããã»ã¹ãèµ·åããŸãã
ç°åžžãªããšã¯äœããããŸããã ããããããã»ã¹ãçµäºãããšã©ããªããŸããïŒ bashããã»ã¹ïŒPID 5ïŒãå®äºãããšããŸãããã ããŸã³ãããã»ã¹ããšãåŒã°ããããããããç¡å¹ããã»ã¹ãã«å€ãããŸãã
ãªããããèµ·ãã£ãŠããã®ã§ããïŒ Unixã¯ãçµäºã¹ããŒã¿ã¹ã³ãŒããååŸããããã«ã芪ããã»ã¹ãåããã»ã¹ã®å®äºãåŸ æ©ããæ¹æ³ã§äœæãããŸãã 芪ããã»ã¹ãã·ã¹ãã ã³ãŒã«ã®waitpidïŒïŒãã¡ããªã䜿çšããŠãã®ã¢ã¯ã·ã§ã³ãå®äºãããŸã§ããŸã³ãããã»ã¹ãååšããŸãã ãããç·ããã®åŒçšã§ãïŒ
çµäºããããåŸ æ©ããŠããªãåã¯ããŸã³ããã«ãªããŸãã ã«ãŒãã«ã¯ã芪ãåŸã§åã«é¢ããæ å ±ãååŸããããã«åŸ æ©ãå®è¡ã§ããããã«ããŸã³ãããã»ã¹ã«é¢ããæå°éã®æ å ±ïŒPIDãçµäºã¹ããŒã¿ã¹ããªãœãŒã¹äœ¿çšæ å ±ïŒãä¿æããŸãã
éåžžããŸã³ãããã»ã¹ã¯æ··ä¹±ãåŒãèµ·ããäœããã®æŽèµ°ããã»ã¹ã§ãããšèããããŸãã ããããæ£åŒã«ã¯ãUnixãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®èŠ³ç¹ããããŸã³ãããã»ã¹ã«ã¯æ確ãªå®çŸ©ããããŸãã ãããã¯å®äºããããã»ã¹ã§ããã芪ããã»ã¹ã¯ãŸã å®äºããã®ãåŸ ã£ãŠããŸãã
ã»ãšãã©ã®å Žåãããã¯åé¡ã§ã¯ãããŸããã ãŸã³ããåŠçããããã®waitpidïŒïŒã·ã¹ãã ã³ãŒã«ã¯ãããªãŒãã³ã°ãïŒåéãåŠçïŒãšåŒã°ããŸãã å€ãã®ã¢ããªã±ãŒã·ã§ã³ã¯ãåããã»ã¹ãæ£ããåŠçããŸãã äžèšã®sshdã®äŸã§ã¯ãbashãçµäºãããšãOSã¯sshdããã»ã¹ã«SIGCHLDã·ã°ãã«ãéä¿¡ããŠèµ·åããŸãã Sshdã¯ããã«æ°ã¥ããåããã»ã¹ãåŠçïŒããªãŒããïŒããŸãã
ããããç¹å¥ãªå ŽåããããŸãã 芪ããã»ã¹ãæå³çãŸãã¯ãŠãŒã¶ãŒã®ã¢ã¯ã·ã§ã³ã«ããçµäºãããšæ³åããŠãã ããã ãã®åããã»ã¹ã¯ã©ããªããŸããïŒ åœŒãã«ã¯ãã¯ã芪ãããªãã®ã§ã圌ãã¯ãå€å ãã«ãªããŸãïŒããã¯å°éçšèªã§ãïŒã
ããã§ãinitããã»ã¹ã圹ç«ã¡ãŸãã åæåããã»ã¹ã®PID 1ã«ã¯ãå€ç«ããããã»ã¹ããæ¡çšããããšããç¹å¥ãªã¿ã¹ã¯ããããŸãïŒããããŸãå®éã®æè¡çšèªã§ãïŒã ããã¯ãinitãå®éã«initã«ãã£ãŠçæãããããã§ã¯ãªãã«ãããããããinitããã®ãããªããã»ã¹ã®èŠªã«ãªãããšãæå³ããŸãã
ããã©ã«ãã§æªéåãããŠããNginxã®äŸãèããŠã¿ãŸãããã Nginxã¯æåã«åããã»ã¹ãäœæããŸãã ãã®åŸãã¡ã€ã³ã®Nginxããã»ã¹ãçµäºããŸãã Nginxã®åããã»ã¹ãinitã«æ¡çšãããŸããã
OSã®ã«ãŒãã«ã¯ãinitããç¹å¥ãªåäœãæåŸ ããŸããã«ãŒãã«ã¯ãinitãæ¡çšãããããã»ã¹ãåŠçïŒåéããç²åŸãïŒããå¿ èŠããããšèããŠããŸãã
ããã¯Unixã§éåžžã«éèŠãªæ©èœã§ãã ããã¯éåžžã«åºæ¬çã§ãããããå€ãã®ããã°ã©ã ã¯æ£ããåäœã®ããã«èšèšãããŠããŸãã ã»ãšãã©ã®ããŒã¢ã³ã¯ãinitã«ãã£ãŠããŒã¢ã³åãããããã»ã¹ãæ¡çšããã³åŠçãããããã«èšèšãããŠããŸãïŒã€ãŸãããŸã³ãã«ãªã£ãåŸã«æ£ããå®äºããŸãïŒã
äŸãšããŠæªéã䜿çšããŸããããã®ã¡ã«ããºã ã¯æªéã ãã«ãŸã§åã³ãŸããã åãæã€ããã»ã¹ãçµäºãããã³ã«ãinitã¯ãã®èåŸã«ãããã¹ãŠã®ãã®ãã¯ãªãŒã³ã¢ããããããšãæåŸ ããŠããŸãã ããã«ã€ããŠã¯ã ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®æŠå¿µãšUNIXç°å¢ã§ã®é«åºŠãªããã°ã©ãã³ã°ã® 2ã€ã®éåžžã«åªããæžç±ã§è©³ãã説æãããŠããŸã ã
ãŸã³ãããã»ã¹ãæ害ãªã®ã¯ãªãã§ããïŒ
ãŸã³ãããã»ã¹ãå®äºããããã»ã¹ã§ããã«ããããããããªãæ害ãªã®ã§ããïŒ çµå±ã確ãã«ããã»ã¹ã«å²ãåœãŠãããã¡ã¢ãªã¯æ¢ã«è§£æŸãããŠããããŸã³ãã¯psã®åãªãè¡ã§ããïŒ
ã¯ãããã®ããã»ã¹ã®ã¡ã¢ãªã¯ãã§ã«è§£æŸãããŠããŸãã ããããããã»ã¹ãpsã§ãŸã èŠãããšããäºå®ã¯ãã«ãŒãã«ãªãœãŒã¹ã䜿çšããããšãæå³ããŸãã waitpidã®ç·ããã®åŒçšã§ãïŒ
ãŸã³ããåŸ æ©ã«ãã£ãŠã·ã¹ãã ããåé€ãããªãéããã«ãŒãã«ããã»ã¹ããŒãã«ã®ã¹ããããæ¶è²»ãããã®ããŒãã«ããã£ã±ãã«ãªããšããã以äžããã»ã¹ãäœæã§ããªããªããŸãã
ãŸã³ããåŸ æ©ã䜿çšããŠã·ã¹ãã ããåé€ããããŸã§ãã«ãŒãã«ããã»ã¹ããŒãã«ã®ã¹ãããã䜿çšããŸãããã®ããŒãã«ããã£ã±ãã®å Žåãæ°ããããã»ã¹ãäœæããããšã¯ã§ããŸããã
ãããŠãããã§Docker
Dockerã¯ã©ãã§ããïŒ å€ãã®äººã¯ãã³ã³ããã§1ã€ã®ããã»ã¹ã®ã¿ãå®è¡ããŸãã ããããã»ãšãã©ã®å Žåããã®ããã»ã¹ã¯é©åãªåæåã®ããã«ã¯åäœããŸããã ã€ãŸããæ¡çšãããããã»ã¹ãæ£ããåŠçãã代ããã«ãå¥ã®åæåããã»ã¹ããããè¡ãã¹ãã§ãããšèããŠããŸãã ãããŠåœŒã¯ãšãŠãæ£ãããšèããŠããŸãã
ç¹å®ã®äŸãèŠãŠã¿ãŸãããã ã³ã³ããã«ãbashã§èšè¿°ãããCGIã¹ã¯ãªãããå®è¡ããWebãµãŒããŒãå«ãŸããŠãããšããŸãã ã¹ã¯ãªããã¯grepãåŒã³åºããŸãã 次ã«ãWebãµãŒããŒã¯ãã¹ã¯ãªããã®åŠçãé·ããããšå€æããããã匷å¶çµäºããŸãã ãã ããgrepã¯å®è¡ããããŸãŸã§ãã äœæ¥ãå®äºãããšããŸã³ãã«å€ãããPID 1ããã»ã¹ïŒWebãµãŒããŒïŒã«æ¡çšãããŸãã WebãµãŒããŒã¯grepã«ã€ããŠäœãç¥ããªããããå®äºãåŠçããããŸã³ãgrepã¯ã·ã¹ãã ã«æ®ããŸãã
åé¡ã¯ä»ã®ç¶æ³ã«ãåœãŠã¯ãŸããŸãã å€ãã¯ãPostgreSQLãªã©ã®ãµãŒãããŒãã£ã¢ããªã±ãŒã·ã§ã³çšã®ã³ã³ãããäœæãããããã®ã¢ããªã±ãŒã·ã§ã³ãã³ã³ããå ã®å¯äžã®ããã»ã¹ãšããŠå®è¡ããŸãã ä»ã®èª°ãã®ã³ãŒããå®è¡ãããšããããåããã»ã¹ãçæãããããããŸã³ãã«å€ãããŸãããïŒ ã³ãŒããå®è¡ããã³ãŒããšã³ãŒãã䜿çšããã©ã€ãã©ãªã確å®ã«ç¥ã£ãŠããã°ããã¹ãŠåé¡ãããŸããã ãã ããäžè¬çãªå Žåãåé¡ã解決ããã«ã¯æ£ããinitãå®è¡ããå¿ èŠããããŸãã
ããããå®å šãªã·ã¹ãã initãéå§ãããšãã³ã³ãããŒã¯ä»®æ³ãã·ã³ã®ãããªéããã®ã«å€ãããŸãããïŒ
initã·ã¹ãã ã¯å¿ ãããéããšã¯éããŸããã ãããããUpstartãSystemdãSysVãªã©ãèããŠããã§ãããã ãããããã³ã³ããå ã§ã¯ã·ã¹ãã å šäœãå®è¡ããå¿ èŠããããšæãããŸãã ããã§ã¯ãããŸããã ãå®å šãªåæåã·ã¹ãã ãã¯ãªãã·ã§ã³ã§ãããå¿ èŠãããŸããã
å¿ èŠãªã·ã¹ãã ã¯ãã¢ããªã±ãŒã·ã§ã³ãèµ·åããæ¡çšãããããã»ã¹ãåéããããšãã¿ã¹ã¯ã§ããåçŽãªå°ããªããã°ã©ã ã§ãã ãã®ãããªåçŽãªinitã·ã¹ãã ã®äœ¿çšã¯ãDockerã®å²åŠãšå®å šã«äžèŽããŠããŸãã
ã·ã³ãã«ãªåæåã·ã¹ãã
ããããæ¢è£œã®ãœãªã¥ãŒã·ã§ã³ããããŸããïŒ ã»ãŒã å€ãè¯ãbashã Bashã¯æ¡çšãããããã»ã¹ãåŠçããŸãã Bashã¯äœã§ãå®è¡ã§ããŸãã Dockerfileã®ãã®ãããªè¡ã®ä»£ããã«...
CMD ["/path-to-your-app"]()
æžãã
CMD ["/bin/bash", "-c", "set -e && /path-to-your-app"]()
ïŒ-eãã£ã¬ã¯ãã£ãã¯ãbashãã¹ã¯ãªãããåçŽãªã³ãã³ããšããŠèªèããexecïŒïŒãçŽæ¥èªèããããšãçŠæ¢ããŸãïŒã
çµæã¯ããã»ã¹ã®éå±€ã§ãïŒ
ããããæ®å¿µãªããããã®ã¢ãããŒãã«ã¯åé¡ããããŸãã ä¿¡å·ã¯åŠçããŸããïŒ killã䜿çšããŠSIGTERMã·ã°ãã«ãbashããã»ã¹ã«éä¿¡ãããšããŸãã Bashã¯çµäºããŸãããSIGTERMããã®åããã»ã¹ã«éä¿¡ããŸããïŒ
bashãçµäºãããšãã«ãŒãã«ã¯å éšã®ãã¹ãŠã®ããã»ã¹ã§ã³ã³ãããŒå šäœãçµäºããŸãã ãããã®ããã»ã¹ã¯SIGKILLã§çµäºããŸãã ãããã£ãŠããããã®ããã»ã¹ãå®å šã«å®äºããæ¹æ³ã¯ãããŸããã ã¢ããªã±ãŒã·ã§ã³ããã¡ã€ã«ã«äœããæžã蟌ããšããŸãããã èšé²äžã«ã¢ããªã±ãŒã·ã§ã³ããã®æ¹æ³ã§çµäºããå Žåããã¡ã€ã«ãç Žæããå¯èœæ§ããããŸãã ããã»ã¹ã®ç°åžžçµäºã¯æªãã§ãã ãµãŒããŒããé»æºã³ãŒããåŒããããªãã®ã§ãã
ããããinitããã»ã¹ãSIGTERMã·ã°ãã«ã§çµäºããããšã«æ³šæããå¿ èŠãããã®ã¯ãªãã§ããïŒ docker stopã¯SIGTERMãinitããã»ã¹ã«éä¿¡ããããã§ãã ãDocker stopãã¯ããdocker startãã䜿çšããŠèµ·åã§ããããã«ãã³ã³ãããæ£ããåæ¢ããå¿ èŠããããŸãã
Bashã®å°é家ã¯ããããã次ã®ããã«ãåã«ã·ã°ãã«ãéä¿¡ããéåžžã®EXITãã³ãã©ãŒãäœæããããšããå§ãããŸãã
# !/bin/bash function cleanup() { local pids=`jobs -p` if [\\[ "$pids" != "" ]()]; then kill $pids \\>/dev/null 2\\>/dev/null fi } trap cleanup EXIT /path-to-your-app
æ®å¿µãªãããããã¯åé¡ã解決ããŸããã åããã»ã¹ã«ã·ã°ãã«ãéä¿¡ããã ãã§ã¯äžååã§ãã initã¯ãåããã»ã¹ãå®äºããã®ãåŸ ã£ãŠããçµäºããå¿ èŠããããŸãã initãæ©ãçµäºãããšããã¹ãŠã®åããã»ã¹ãïŒçŽç²ã«ã§ã¯ãªãïŒã«ãŒãã«ã«ãã£ãŠåŒ·å¶çµäºãããŸãã
æããã«ãå°ãè€éãªãœãªã¥ãŒã·ã§ã³ãå¿ èŠã§ãããUpstartãSystemdãããã³SysVãåããå®å šãªinitã·ã¹ãã ã¯ã軜éã®Dockerã³ã³ããã«ã¯å€ªãããŸãã 幞ããªããšã«ãBaseimage-dockerã«ã¯ãœãªã¥ãŒã·ã§ã³ãå«ãŸããŠããŸãã Dockerã³ã³ããå ã§äœ¿çšããããã«ãç¬èªã®è»œéinitã·ã¹ãã ãäœæããŸããã ããè¯ããã®ãçºæããããšãªãã my_initãšããååãä»ããŸãã ã ããã¯350è¡ã®Pythonããã°ã©ã ã§ãã
my_initã®äž»èŠãªæ©èœïŒ
- åããã»ã¹ã®åŠçïŒåãåãïŒ
- ãµãããã»ã¹ãèµ·åããŸã
- æ倧ã¿ã€ã ã¢ãŠãã§ããã¹ãŠã®ãµãããã»ã¹ã®å®äºãåŸ ã£ãŠããå®äºããŸã
- Dockerãã°ã«ã¢ã¯ãã£ããã£ãèšé²ããŸã
Dockerã¯ãã®åé¡ãèªåã§è§£æ±ºããŸããïŒ
çæ³çã«ã¯ãPID 1ã®åé¡ã¯Dockerèªèº«ã§ãã€ãã£ãã«è§£æ±ºããå¿ èŠããããŸãã çŽ æŽãããããšã§ããããããŸã§ã®ãšããã2015幎1æã«ã¯ãDockerããŒã ãããã®ãããªããšã¯èããŠããŸããã ããã¯æ¹å€ã§ã¯ãããŸãã-Dockerã¯éåžžã«éå¿çã§ããã圌ãã®ããŒã ã«ã¯ããéèŠãªåé¡ããããšç¢ºä¿¡ããŠããŸãã PID 1ã®åé¡ã¯ããŠãŒã¶ãŒã¬ãã«ã§ç°¡åã«è§£æ±ºã§ããŸãã ãããã£ãŠãDockerããã®åé¡ãå ¬åŒã«è§£æ±ºãããŸã§ãäžèšã®ãããªã·ã¹ãã ã䜿çšããŠã人ã ãèªåã§è§£æ±ºããããšããå§ãããŸãã
ããã¯ãŸã£ããåé¡ã§ããïŒ
ãã®åé¡ã¯ä»®èª¬ã®ããã«æãããããããŸããã ã³ã³ããå ã§ãŸã³ããèŠãããšããªãå Žåããã¹ãŠãæ£åžžã§ãããšèãããããããŸããã ãã ããåé¡ããªãããšã確èªããå¯äžã®æ¹æ³ã¯ããã¹ãŠã®ã³ãŒãããã¹ãŠã®ã©ã€ãã©ãªãããã³ã©ã€ãã©ãªã§äœ¿çšãããŠãããã¹ãŠã®ã©ã€ãã©ãªããã§ãã¯ããããšã§ãã ãããè¡ããªãã£ãå Žåãããããã©ããã«åããã»ã¹ãéå§ããè¡ããããããããŸã³ãã«å€ãããŸãã
ããŒãã£ãŒã®æ³åãå¿ããªãã§ãã ããã
ãŸã³ãã¯ã«ãŒãã«ãªãœãŒã¹ããŒãã«ãè©°ãŸããããšããäºå®ã«å ããŠãããã»ã¹ããã§ãã¯ããããã°ã©ã ã®æ£ããåäœã劚害ããå¯èœæ§ããããŸãã ããšãã°ã Phusion Passengerã¯ããã»ã¹ã管çããŸãã ããã»ã¹ãã¯ã©ãã·ã¥ãããšãããã»ã¹ãåèµ·åããŸãã psã®åºåã解æããããã»ã¹ã«ã·ã°ãã«0ãéä¿¡ããŸãã ãŸã³ãã¯psã§è¡šç€ºãããã·ã°ãã«0ã«å¿çãããããPhusion Passengerã¯ããã»ã¹ããŸã çããŠãããšå€æããŸãã
ãŸã³ãã®åé¡ãã身ãå®ãããã«å¿ èŠãªã®ã¯ãBaseimage-dockerã®æ¥ç¶ãŸãã¯350è¡ã®my_initã®ã€ã³ããŒãã«5åè²»ããããšã ãã§ãã ãã£ã¹ã¯ãšã¡ã¢ãªã®è¿œå ã³ã¹ãã¯æå°éã§ããæ°ã¡ã¬ãã€ãã ããã¡ã¢ãªã«è¿œå ãããŸãã
ãããã«
PID 1ã®åé¡ã¯çŸå®ã§ãã ããã解決ãã1ã€ã®æ¹æ³ã¯ã Baseimage-dockerã䜿çšããããšã§ãã ãããå¯äžã®æ¹æ³ã§ããïŒ ãã¡ããéããŸãã Baseimage-dockerã®ç®æšã¯æ¬¡ã®ãšããã§ãã
- Dockerã³ã³ããã䜿çšããéã®ããã€ãã®éèŠãªãã€ã³ãã«ã€ããŠäººã ã«äŒããããã
- ã¿ãŒã³ããŒãœãªã¥ãŒã·ã§ã³ãæäŸããŠã人ã ãè»èŒªãåçºæããªãããã«ããŸãã
ãã®å Žåãããã€ãã®è§£æ±ºçãå¯èœã§ããäž»ãªããšã¯ããããã説æãããã¿ã¹ã¯ã«å¯ŸåŠããããšã§ãã CãGoãRubyãªã©ã§ç¬èªã®ããŒãžã§ã³ãäœæã§ããŸãã
åºæ¬çãªUbuntuã€ã¡ãŒãžã䜿çšããããªãå ŽåããããŸãã ãã¶ãããªãã¯CentOSã䜿çšããŠããŸãã ãã ããBaseimage-dockerã¯åŒãç¶ãæçšã§ãã ããšãã°ã ourpassenger_rpm_automationãããžã§ã¯ãã¯CentOSã³ã³ãããŒã䜿çšããŸãã my_initãæœåºããŠããã«æ¿å ¥ããŸããã
幞ããªèšŒæ ïŒ