ã¢ã³ãã³ã»ãã¥ã¬ãããŒïŒ Badoo ïŒ

仿¥ãç§ãã¡ã¯ãã®ãããªå
éšãããã³ã«ããªããæåŸ
ããŸããBadooã¯Dockerãå¿
èŠãã©ãããæããŠãããŸãã ããªãã¯ãããå¿
èŠãšãããã©ããããªãèªèº«ã®ããã«çµè«ãåŒãåºãããšã詊ã¿ãã§ãããã ãããã£ãŠããã®æ
å ±ã¯ãã¹ãŠããã®ãããªãã®ã§ãããããã€ã³ã¿ãŒãããã§ã¯å
¥æã§ããŸããã

ã¬ããŒãã®äžã§ãæãéèŠãªããšã«ã€ããŠã話ããŸããããã¯ãã¿ã¹ã¯ã®å®è£
ãã©ãããéå§ãããã«é¢ãããã®ã§ãã ãªãããªãããããããŠããã®ãããªãããªãã¯ãããåã£ãŠããã®ããæ±ºããªããã°ãªããŸãããïŒ
ç§ãã¡èªèº«ã¯ããããã®è³ªåã«çããŸããããåé¡ãªãå®è£
ããããšã¯ã§ããŸããã§ããã 解決ããåé¡ã®äžéšã äž»ãªãã®ãç¹å®ããŸããããããã«ã€ããŠãããã³ãããã«ã©ã®ããã«å¯ŸåŠãããã«ã€ããŠèª¬æããŸãã æåŸã«ãç§ãã¡ã®çŽ æŽããããããŸããŸãªçš®é¡ã®æ°ããèªè»¢è»ãæããããšãããããäœãæ¹æ³ãèŠãããšãçºæããããšã宣äŒããŸãã ç§ã¯ããããããªãã«èŠããŸããç§ã¯åœŒãã«ã€ããŠããªãã«è©±ããŸããããªãã¯ããã€ãã®æèŠãè£ããŸãã ãããè¡ããïŒ
ãããéçšãµãŒãã¹ãå¿
èŠãªçç±ã§ãããäžè¬ã«ãããçš®ã®ããžãã¹ãå¿
èŠã§ãããç¹ã«ç®¡çè
ãå¿
èŠãªçç±ã§ãã

ç§ãã¡ã®äž»èŠãªãŠãããã¯ãµãŒãã¹ã§ãã ãµãŒãã¹ãæ©èœããªãå Žåããªãããã«éãŸã£ãŠããã®ã§ããïŒ é æ¯ã§ã¯ããµãŒãã¹ã¯æ¬¡ã®ããã«ãªããŸãã ããã¯ãããçš®ã®ããžãã¹ããžãã¯ãäœæããäœããååŸãããããã°ã©ããŒã®ç¥ç財ç£ã§ãã ãã·ã³ã«ã¯ããã€ãã®ãããã¯ãŒã¯èšå®ã®å±€ãããããã£ã¬ã¯ããªãµãŒãã¹ã«é¢é£ãããã®ãšé¢é£ããªããã®ãããã€ããããŸãã äžè¬ã«ãããã¯ããªãã¬ãŒã·ã§ã³ãµãŒãã¹ãããèªäœãšã·ã¹ãã ã®ãã±ããããŸãã¯ãµãŒãã¹ãéçºè
ãããããã¯ã·ã§ã³ã«ã©ã®ããã«è»¢éããããã瀺ããã€ãã衚ããŸãã ç§ãã¡ã®äž»ãªã¿ã¹ã¯ã¯ã1å°ã®å€§åã§åŒ·åãªãµãŒããŒãçšæããããã«ããã€ãã®ãµãŒãã¹ãè©°ã蟌ãå¿
èŠããããšããããšã§ãã

ãã¹ãŠãçŽ æŽãããèŠããŸãã é廿°å¹Žã«ããã£ãŠãããã«äŒŽãç¶æ³ã¯æ±ºããŠå€åããŠããŸããã ç§ãã¡ã¯äž¡æ¹ãšãããã€ã圢åŒã§ãµãŒãã¹ãå±éããå±éããŸããã

åé¡ã¯ããã·ã³ãåŠçã§ãããäœããã®çç±ã§ãµãŒãã¹ã解決ããå¿
èŠãããå Žåã§ãããã·ã³ã察å¿ã§ãããæ°ããããŒããŠã§ã¢ãå°çããããããããååŸããŠç§»è¡ãããã ãã§ãã ãããŠãç§»è¡äžã«æåã«ååŸããããšã¯ãããšãã°Dockerã䜿çšããªãå ŽåããµãŒãã¹ãã¯ãªãŒã³ãªãã·ã³ã«ãã©ãã°ããããšã§ããã¯ãªãŒã³ãªæ°ãããã·ã³ã§ã¯ãã¹ãŠãåé¡ãªããçŽ æŽãããããã£ã¬ã¯ããªããã«ã¢ãããããŸããã1ã€ã®åé¡... ChefãPuppetãªã©ã®æ§æç®¡çã·ã¹ãã ã䜿çšããŠããŸããã誰ãããããå±éããŠããŸããïŒ ãããŠã誰ããã¹ãŠãåãããã¹ãŠãåãæ»ãããã«ãããã§ã¹ããéã«æžãã®ã§ããïŒ ããŒã«ã«ã¯3人ããããŸããã ãããã£ãŠããããæžããŠããªããã¹ãŠã®äººã¯ãããªãã®ãµãŒããŒã«æçµçã«ããã«äœãã§ãããã®ã®ããã€ãã®ç©Žãšæçãããããããã®ç§»è¡ã®é »åºŠã«å¿ããŠããµãŒããŒãé
ããæ©ããæé·ããããšãç¥ã£ãŠãããšæããŸãäžçš®ã®ãŽãã«ãªããŸãã Dockerã䜿çšããŠåãç§»è¡ãè¡ã£ãå Žåãã¬ã³ã¬ãåãåºããŠå¥ã®å Žæã«é
眮ãããšãå€ããã®ã¯äœãæ®ãããŸããã§ããã ããã

ãããã£ãŠãäžè¬çã«æäœåŽããDockerãæ€èšãå§ããæåã®çç±ã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ããã¢ããªã±ãŒã·ã§ã³ãè§£ããããŒã«ã«ãŸãšããã¿ã¹ã¯ã§ãã
次ã®ç¬éã ãªããªã ç§ãã¡ã¯ãŸã£ããããã°ã©ããŒã§ã¯ãããŸãããããšã³ãžãã¢ãã¡ã³ããã³ã¹äœæ¥å¡ã§ãããªããããªãœãŒã¹ã«ã€ããŠã¯åžžã«ããŒããŠã§ã¢ã«ã€ããŠèããŠããŸãã ã€ãŸã éã¯å€§ããªéšå±ã«ããç©ççãªç®±ã®ãããªãã®ã§ãå·æ¿ããããæé€å©Šãããã«æ¥ãªãããšãé¡ã£ãŠããŸãã

ãããŠä»¥æ¥ å°çšã®ããŒã¿ã»ã³ã¿ãŒã«æ©åšãèšçœ®ããã±ãŒãžãããã€ãåãå€ããŠãããæç¹ã§æ©åšã倿Žããå¿
èŠããããšèãå§ããŸãã ããã€ãã®çç±ã§-è£
åãæ°ãããªããããã©ãŒãã³ã¹ã®ãªãŠã ããŠãããã®çš®é¡ãå¢ããŸãããé
ããæ©ãã倿Žããå¿
èŠããããŸãã

ãããã£ãŠããã£ãã·ãã£ãã©ã³ãã³ã°ã«é¢é£ããæåã®åé¡ã¯ããããåé¡ã§ã¯ãªããã¿ã¹ã¯ã§ãããå¯èœãªéãåççã«ã©ãã¯å
ã®ã¹ããŒã¹ã䜿çšããå¿
èŠããããšããããšã§ããããã¯é»æ°ã®ã³ã¹ãã§ãããäœããããŸããéã§ãã

æåã®ç¬éããã®æ¬¡ã®çµè«ã¯ãåãããã«ãããã¯ãŒã¯æ©åšã®ããŒããå¯èœãªéã䜿ããããšããããšã§ãããããã¯ãŒã¯æ©åšãåäžã§ãããã¹ããŒã¹ãå æããé»åãæ¶è²»ããããã§ãã

ç§ãã¡ã¯ãããã黿°ãç¯çŽãããéãç¯çŽããç°å¢ã«ãšã£ãŠçŽ æŽããããã®ã«ãããšããäºå®ã«ã¹ã ãŒãºã«è¿ã¥ããŠããŸãã ããã¯ç§ãã¡ã«ã¯ããŸãé¢ä¿ãããŸããããããã«ã¯çŸãããŠçŽ æŽããããã®ãããªããžãã£ããªããŒãã¹ããããŸãã

ãããããã匷åãªãµãŒããŒã«ãµãŒãã¹ããã³ãã«ãããšèšããšãã±ããšæå®ããæ¬¡ã®ã¢ã€ãã ãååŸããŸã-æœè±¡åããããããå€ãã®æ©äŒãããäžè¬çãªé害ç¹ã®ãããªç¶æ³ã«ãªããŸãã åãç©çãã·ã³äžã«1ã€ã®ãµãŒãã¹ãååšããå Žåããã¹ãŠãæ£åžžã§ãããã»ãšãã©ã®å ŽåããµãŒããŒã«é害ãçºçããŠãæå€±ã¯å°ãªããªããŸãã ãã®å Žåãããã¯å²åŠçãªè³ªåã§ããå€ãæ©åšãæ°ããæ©åšã«äº€æããããšã話ããŠããå Žåãæ°ããæ©åšã¯å€ãæ©åšãããäœã確çã§æ
éããå¯èœæ§ãæãé«ãããã§ãã ãŸããå€ãã®äººããå±éããã»ã¹ã§çºçããåé¡ã®æ°ãèããŠããŸãã ã€ãŸã å®éãçµ±èšã«ãããšããã®åäžé害ç¹ãååŸããããšã¯ãããçš®ã®æ²ç·æ²ç·ãããçç£äžã®å£®å€§ãã§ã¯ãããŸããã

3çªç®ã®ãã€ã³ãããªãDockerãæ€èšãå§ããã®ããããã¯ããããããæ·±å»ãªåé¡ã§ããããã°ã©ããŒã«ãã£ãŠæžãããç¬éãããã¢ããªã±ãŒã·ã§ã³ã«çµã³ä»ãããããã®ãäœã倿Žããã«ãã¢ããªã±ãŒã·ã§ã³ãæ¬çªç°å¢ã«å±éããããšã§ãã Dockerã䜿çšããå Žåã æåã«ãããçš®ã®ã©ã€ãã©ãªãããã±ãŒãžããã®ä»ã®ãã®ã䜿çšããŠç¹å®ã®ç°å¢ã«ã¢ããªã±ãŒã·ã§ã³ãé
眮ããŸãããããŒã ã·ãã£ã§æ¡ä»¶ä»ãã§ã¢ã»ã³ããªããã»ã¹ã§é
眮ããŸããã ãã®åŸãåãå
ã®åœ¢åŒã§QïŒAãã¹ãããã»ã¹ã«é²ã¿ããã®åŸãã¹ããŒãžã³ã°ãéçºãéããŠãã³ã³ããå
ã®å®æããã¢ããªã±ãŒã·ã§ã³ãæ¢ã«å®çšŒåã«ç§»è¡ã§ããŸãã ã€ãŸã ãã®æ®µéã§ããã€ãã®å€æŽãç Žæ£ããŸã...ã¢ããªã±ãŒã·ã§ã³ã«åé¡ãããããã®ã¢ããªã±ãŒã·ã§ã³ã®ããŸããŸãªç°å¢ãéçºäžãã¹ããŒãžã³ã°äžãããã³QïŒAãã¹ãäžã®å Žåãäžè¬ã«ã¢ããªã±ãŒã·ã§ã³ã«åœ±é¿ãããã®ãçè§£ããããšã¯éåžžã«å°é£ã§ããåäœããªããã€ãŸã ããã§ãã®åé¡ã100ïŒ
解決ããŸããã

æåŸã«ãç§ãã¢ã¹ã¿ãªã¹ã¯ä»ãã®ã¢ã€ãã ãšããŠããŒã¯ããã®ã¯ãæåã¯DockerfileãèŠããšãã10幎åã«äœããã®æ»ãããã£ãããã«æããããã§ãã ãã£ãã·ã¥ã§ã¯ãªããçè§£ã§ããªããã£ãã·ã¥ãããããããããšãã«äœããæžãå¿
èŠããããŸãããªããããã®txtãã¡ã€ã«ãæžãã®ã§ããïŒ ãããå®éã«ã¯ãããã«å ããŠãåžžã«é£äººã®èšå®ãèŠããšããã®äººãäœãããŠäœãããã®ãã圌ãäœãèããŠããã®ããDockerãã©ã®ããã«åäœãããã®ãããªDockerãã¡ã€ã«ãèŠãã®ããç¥ãããšãã§ããŸããã¬ã€ã€ãŒã®ãªãŒããŒã©ãããäœãã®å®è¡ããã£ãã·ã¥ã®äœ¿çšã®ããã»ã¹ãæé©åããããã«ããã®ãã¡ã€ã«ã倿Žã§ããå ŽåããããŸãã ã€ãŸã å®éãDockerfileã¯ãã¢ããªã±ãŒã·ã§ã³ã«é¢ããåžžã«ææ°ã®åªããããã¥ã¡ã³ãã§ãã
ããã§ãç§ãã¡ã¯èªåèªèº«ã®è³ªåã«çããŸããããªãDockerãå¿
èŠãªã®ã§ããïŒããã玹ä»ããŠãç§ãã¡ã¯åžžã«ãããã®æçŽã«æ»ã£ãŠèŠãŠãã ããïŒç§ãã¡ã¯æ±ºããŸãããæ±ºããªãã£ããããã¯èšåããŸãããããã¯åœãŠã¯ãŸããŸãããïŒ
ããã«ãDockerãå®è£
ããããã»ã¹ããå§ãŸã£ãè峿·±ããã€ã³ãã ãã¡ãããåé¡ãçºçããŸããã ãããã®åé¡ã®ããã€ãã¯ãGithub Dockerãªã©ã§è°è«ãããŸããã äžéšã¯è§£æ±ºããäžéšã¯ãŸã ææ¡ããŠããŸããã 圌ãã¯ç§ãã¡ã®é£ã«æ¥ããšæããŸãã

æåã®è峿·±ãåé¡ã¯ãå°ãªããšãäœããã®åœ¢ã§ã¢ããªã±ãŒã·ã§ã³ã®ãã°ãã¯ãªãŒã³ã¢ããããããšã§ãã ç§ãã¡ã¯ã¿ã¹ã¯ã«çŽé¢ããŸããïŒãsyslogãäœæããããã°ã©ãã¯/ dev / logã«æžã蟌ã¿ããã®ã§ãã©ããã«éä¿¡ããããåŠçãããããŸããã

ç§ãã¡ã¯åº§ã£ãŠèããŸããïŒ2çªç®ã®ãµãŒãã¹ãã³ã³ããã«å
¥ããã«ã¯ã©ãããã°ããã§ããïŒ æåã®ã¢ã€ãã¢ã¯æ¬¡ã®ãšããã§ãã1ã€ã®ã³ã³ãã-ãã®äžã§å®è¡ããã1ã€ã®ãµãŒãã¹ã ééã£ãŠããŸãã ãžã¬ã³ããçºçããŸãã ã©ããã

ããã¯ããã°ãé
ä¿¡ããŠããªããã©ãããå°ãããããããåã³ã³ããã«æŒã蟌ãå¿
èŠããã+1ãµãŒãã¹ã§ããããšã倿ããŸããã ããã¯ãäœããããå¿
èŠããããšããæ ãæ£åœåãããµããã©ã°ã©ãã§ãã ãããŠããã€ãã®ããã«æšæ¥å¿
èŠãªã¿ã¹ã¯ã ãã§ã«ããã°ã©ããŒãããã°ãåéããå¿
èŠããããŸãã ãããã®ãã°ãåŠçããéšåã¯æºåãã§ããŠããã®ã§ãå¿
èŠãªã®ã¯ããã ãã§ãã ãããã£ãŠãæåã«çºæããã䜿çšãéå§ããã®ã¯ãã³ã³ããå
ã®dev / logãœã±ãããååŸããŠãããã³ã°ããããã«æžã蟌ã¿ãéå§ããããšã§ãã ãã£ãããïŒ

ç§ãã¡ã¯æ±ºå®ããåæããå±éããããŸããããŸããã ã¡ãã»ãŒãžãæ¥ãŠããŸãã æåã®åé¡ãçºçãããŸã§ããã¹ãã®syslog config'iã倿ŽããŠãªããŒãããå¿
èŠããããŸããã T.O. ã³ã³ããã¯å€ããœã±ãããä¿æãç¶ããããã«äœããæžã蟌ã¿ãã¡ãã»ãŒãžã¯ã©ãã«ãè¡ãããããã«æ®ããŸãã ã©ããã

ãã®åé¡ã¯è¯ãã±ãŒã¹ã§ããããã¯ãæåã®æ®µéã«ãã£ã決å®ã®æåã®ã¹ã±ãããå¿ããªãããšã瀺åããŠããŸãã ãã®å Žåãã1ã€ã®ãµãŒãã¹ã1ã€ã®ã³ã³ãããŒã§ãããšããèãã§ãã³ã³ãããŒå
ã«syslogãäœæããŠãç¥ã«ç¥çŠããŠãã ããããšããèãã«æ»ãå¿
èŠããããŸããã ãããŠã1ã€ã®ãµãŒãã¹ã«ã€ããŠç©ççã«ç§ãã¡ã«è©±ãã人ã¯ããŸããã§ããã syslogãã³ã³ããã«ããã·ã¥ããŸããããã®syslogã®æ§æã¯å€æŽãããŸãããå®éãçŸåšã®ããŒãžã§ã³ä»¥å€ããµããŒãããå¿
èŠã¯ãããŸãããsyslogã§ã¯ãèµ·åãããã·ã³ã®ããŒã«ã«ãã¹ãã«ãã«ã¡ãããéä¿¡ãã 'ãã®ãã·ã³ã¯ããã°ãšãšãã«äžå€®ãªããžããªã«ããŒã¿ãéä¿¡ããŸãã

次ã®è峿·±ãåé¡ã¯ãã³ã³ããã«ãã£ã¬ã¯ããªããã€ã¹ã远å ããããäœããã®çš®é¡ã®ãããã¯ããã€ã¹ã远å ããããã«ãæ¯èŒçãã£ã¬ã¯ããªãå¿
èŠã§ãããšããäºå®ã«é¢ãããã®ã§ãã ãã¹ãŠãã·ã³ãã«ãªããã«èŠããŸãã-vã¹ã€ãããæå®ã远å ããã¹ãŠãæ©èœããŸãã ãŸããåœç€Ÿã«ã¯ãããã€ãã®ã«ãŒãããã€ã¹ã䜿çšããŠã³ãŒããé
åžãã-o loopã§ããŠã³ããããšããæ©èœããããŸãã æœè±¡ãããã¯ããã€ã¹ããããã³ã³ããã§èµ·åãããã®ã«ãŒãããã€ã¹ãããã£ã¬ã¯ããªã®äžã«ããããã€ã¹ããããããŸãã ãã¹ãŠãæ£åžžã«æ©èœããDockerã®ç¹å¥ãªæ©èœã«ããããã¹ãŠã®ãã£ã¬ã¯ããªãå
éšã§ãããããããšãããã¹ãŠã®ãã¡ã€ã«ã¯ãããŠã³ããã€ã³ãã®ãã§ãŒã³å
šäœã«æ²¿ã£ãŠç§»åãããã®ããŒãžã§ã³ã§å®è¡ããããã«å¿
èŠãªãã¹ãŠã®proc /ããŠã³ãããã©ãã°ããŸãããªãã圌ã«èšããšããã¹ãŠã®proc / mountãäžç·ã«ãã©ãã°ããŸãã
ããã«ãåé¡ã®æ¬è³ªã¯ããã¹ãŠã®äººã«ãšã£ãŠããã®ã«ãŒãããã€ã¹ãã¢ã³ããŠã³ãããŠããã·ã³ã«12-20-50ããªãããã«ããããšããããŠå€ãã³ãŒããæ¯é±å¿
èŠãšããªãããšãæããã«ãªãããšã ãšæããŸãã ãããŠãç§ãã¡ã¯ããã§äœãåŸãŸããïŒ ç¹å®ã®ããã»ã¹ããããã¯ããã€ã¹ãä¿æããŠããç¶æ
ã«ãªããŸããããããã¢ã³ããŠã³ãããããšã¯ã§ããŸããã ãããè¡ãã«ã¯ãã³ã³ããã«ç§»åããŠãããã«ããŠã³ãè§£é€ããå¿
èŠããããŸãã ããããä»¥æ¥ ãç¹æš©ãªããã¢ãŒãã§ã³ã³ãããèµ·åããŸãããããã§ãã¹ãã·ã¹ãã ããumountãäœæããããšã¯ã§ããŸããã

ãããŠãããªãè峿·±ãåé¡ãçºçããŸããããã¯ãã³ã³ããã§ã®ã¿åèµ·åã§ããããšã瀺åããŠããŸãã ããã¯è§£æ±ºçã§ã¯ãããŸãããããã¯æ¬åœã«å€§ããªåé¡ã§ããååãšããŠã解決çã¯æè¡çã§ã¯ãªããããããŸããããçµç¹å
ã§ã®äœããã®åæã®åœ¢ã§ãã

ãããã£ãŠãæåã«è§£æ±ºã§ãã解決çã¯ãåºæ¬çã«æ©èœããŸã-ç¹æš©ã¢ãŒãã§ã³ã³ãããŒãååŸããŠå®è¡ããããšã§ãã ããŸãã
2ã€ç®ã®ããšã¯ãããŸããŸãªéšéã§ãããã°ã©ããŒããªãªãŒã¹ããŒã ãä»ã®èª°ããšäžç·ã«åº§ã£ãŠèãããããã®åçãªããŠã³ããã€ã³ããé
眮ããªãããã«ããæ¹æ³ãèããããšã§ãã

ã€ãŸã ããã¯ã座ã£ãŠäœãã§ããããèããå¿
èŠãããå Žåã®1ã€ã§ãã ãã®åé¡ã解決ããããã®ããã€ãã®æ§é çãªå
éšåæãšå€æŽã ã€ãŸã ãã®å Žåãæè¡çãªç«å Žããåé¡ã«ã€ããŠæŠãããšã¯æå³ããããŸããã Dockerã³ã³ãããŒã®å Žåããã®ãããªåçã«ãŒãããã€ã¹ã®äœ¿çšã忢ããŸããã

以äžã®è峿·±ãã¬ãŒãã¯ãnf_conntrackã䜿çšããŠiptablesã«æ¥ç¶ãããŠããŸãã Dockerã«ã€ããŠèªããšãDockerã¯äœãæäŸããŸããïŒ åœŒã¯ãç§ãã¡ã¯å¥œããªã ãã³ã³ãããèµ·åã§ããèšå€§ãªæ°ã®ããŒãã䜿çšã§ããå
éšã®ã³ã³ããéã®æ¥ç¶ãæé
ã§ããäœããã®åé¢ãã§ãããšèšããŸãã ãã¡ãããiptablesã䜿çšãããšãèµ·åæã«ã³ã³ããã§æå®ããã®ãå¿ããå Žåã«èŠå®ã§ããã«ãŒã«ããããŸãã ãããã誰ã1ã€ã®ããšã«ã€ããŠæç¢ºã«èªã£ãŠããŸããããã®å ŽåãLinuxã¢ãžã¥ãŒã«nf_conntrackã䜿çšãã矩åããããããèªäœã¯é«éã§ã¯ãããŸããã

ãã®åé¡ã解決ããæ¹æ³ã¯2ã€ãããŸãã
æåã®æ¹æ³ã¯ãã¢ããªã±ãŒã·ã§ã³ããããã¯ãŒã¯ã«ããŸãããŒããããŠããªãå Žåããã®ãŸãŸã®ç¶æ
ãç¶æããããšã§ãã nf_conntrackããŒãã«ããªãŒããŒãããŒããç¬éãŸã§ããã¹ãŠãæ£åžžã«æ©èœããŸãã 寿åœãå»¶ã°ãããã«äœãã§ããŸããïŒ nf_conntrackããŒãã«ãæ¡å€§ããŸãã
ããã«ãããã¯ãã®ãããªå æé¢ä¿ã§ã-conntrackããŒãã«èªäœãå¢ããå Žåãæ¥ç¶ã®ããã·ã¥ããŒãã«ãå¢ãããŠãLinuxã«ãŒãã«ã®ããã©ã«ããããå€ããªãããã«ããå¿
èŠããããŸãã
3çªç®ã®é
ç®ãèŠããŠãã䟡å€ããããŸããããã©ã«ãã§ã¯ãLinuxã§ã¯çŽ10åã§ãã¹ãŠã®æ¥ç¶ã確ç«ããããã§ã«è§£æ±ºãããŠããŸãã å®éãææ°ã®ãµãŒãã¹ã§ã¯ã30ç§ä»¥äžããããšæããŸãã æ¥ç¶ãäœæããåŸãäœããçºçããªãã£ãå Žåã¯ããµãŒãã¹ãäžè¯ã§ããããåã«æ¥ç¶ãäžèŠã§ãã ãããã£ãŠã10åã¯å®éã®ãªãŒããŒã¯ããã¯ã§ãã

ãã®ã¢ãããŒãã§ã¯ãå®è·µã瀺ããŠããããã«ã座ã£ãŠåŸ
ã€ããšãã§ããŸãã ããããé
ããæ©ããåé¡ãçºçãã確å®ã«çºçããŸãã ãããŠãconntrackã®åäœãé
ããããäœãããªãã»ããè¯ããšããäºå®ã«ãããããæç¹ã§ããããã®å¢å ã¯åã«å©ãã«ã¯ãªããŸããã

ãã®åé¡ãèªåã§ã©ã®ããã«è§£æ±ºããŸãããïŒ æåã«èšãããã®ã¯ãconntrackã䜿çšãããå®çšŒåç°å¢ããµãŒãã¹ã§ã¯äœ¿çšããªãããã«ããããšã§ãã ãããã¯ãŒã¯äº€æã®éãã¯ããã«å°ãªããããéçºã®äžéšãšããŠäœ¿çšããã¹ããŒãžã³ã°ã«äœ¿çšããŸãã
ç§ãèŠãããšãææ¡ãããã®ãã-ããã¯çŽ æŽãããWeaveãããžã§ã¯ãã§ããããã«ããããããã¯ãŒã¯æ©åšããã€ãã¹ããŠãããã¯ãŒã¯çžäºäœçšãæ§ç¯ã§ããŸãã ããã¯ãDockerãã¹ãéã®ãœãããŠã§ã¢ãœãªã¥ãŒã·ã§ã³ã§ãã æãç°¡åãªè§£æ±ºçã¯ãDockerã®èµ·åæã«çæã§ããããã©ã«ãããªããžã䜿çšããããšã§ãã ãŸããçµã¿èŸŒã¿ã®Linuxããªããžã³ã³ãã£ã®ã¥ã¬ãŒã¿ãŒã䜿çšããããšãã§ããŸãã ãããŠãããªããçŸãããšããå°ãæè»æ§ãæããªããçŽ æŽãããåè«ããããŸã-Open vSwitchã çŸæç¹ã§ã¯ãDockerã®ãã©ã°ã€ã³ã®ãªã¹ãã«ã¯ãOpen vSwitchã«å¯Ÿããã³ã³ãããŒã«ããããŸãããããã¯ãæšå¹ŽçŽæããæ®å¿µãªããšã§ãã

åã«èšã£ãããã«ããã¹ãŠã®ã³ã³ãããèµ·åããŠconntrackãåé€ãããšãã«ããã¹ãã·ã¹ãã ããã³ã³ãããžã®ãããã¯ãŒã¯ããã€ã¹ã®åŸãã䜿çšããããã«ãèªåã§æ±ºå®ããŸããã ããã¯ãã®ãããªåé¡ã§ãããèãã䟡å€ããããããåé¡ã解決ããªãã£ãã¹ã¿ã³ãã¯è§£æ±ºããŸããã ç§ãã¡èªèº«ããã®ããã«æ±ºããŸããã誰ããéãæ¹æ³ã§è§£æ±ºãããããããŸããã

Dockerã«çŽé¢ããã»ãšãã©ã®äººãå°ãªããšãããã€ãã®ããžãã¹ã«çŽé¢ããŠããæ¬¡ã®è峿·±ãç¹ã¯ããã¡ã€ã«ãä¿åããããã®ã¹ãã¬ãŒãžãã©ã€ããŒã®éžæã§ããã 誰ããé·æãæã£ãŠããããã誰ããçæãæã£ãŠããŸãã 圌ããåžå Žã«åå
¥ããŠæäŸããAuFSããããŸãããã¡ã€ã³ã©ã€ã³ã«ã¯å
¥ãããæ±ºããŠå
¥ããªãã§ãããã è«çããã€ã¹ãåãåºããŠããŠã³ããããã€ãŸãããŠã³ããããšãã®åé¡ã«å¯Ÿããã¯ãŒã«ãªè§£æ±ºçããããŸãã ããã¯ãããã€ã¹ããããŒã«å ããŠãããçš®ã®çµã¿èŸŒã¿ãã¡ã€ã«ã·ã¹ãã ïŒæ¡ä»¶ä»ãX3ïŒã§ãã ãã®ããŠã³ããå®è¡ããŠããŸã-åããŠã³ã...ããã¯ãã¹ãŠãäžè¬çã«ããããã®ã¬ã€ã€ãŒãšè«çããã€ã¹ã®å·šå€§ãªãã§ãŒã³ã«æé·ããŸãã BTRFSããããŸããããã¯ãDockerã«å¿
èŠãªæ©èœã®ååãããã¡ã€ã«ã·ã¹ãã ã®åºæã®æ©èœãšããŠããã©ã«ãã§ãµããŒãããŸãã ãããŠãããã€ãã®ãã©ã°ã€ã³ãã¯ãŒã«ãªãã®ãå®éã«ã¯ããã§ã¯ãªããã®ã«ãã£ãŠå®è£
ãããä»ã®ããã€ãã®ãã®ããããŸãã ããã§ãç§ãäžç·ã«ä»äºãããªããã°ãªããªãã£ã3ã€ã®ããšãæžãçããŸããã

ãŸããBTRFSãåŒãèµ·ããå¯èœæ§ã®ããåé¡ã調ã¹ãŠãã ããã BTRFSã§ã¯ãäœããã®çš®é¡ã®ãããã¯ããã€ã¹ãä¿æããå¿
èŠããããŸããããã¯ãBTRFSäžã®Dockerã®ã«ãŒããã£ã¬ã¯ããªã«ãªããŸãã ãµãŒããŒäžã®ãã¹ãŠã®ããŒãã£ã·ã§ã³ããŒãã«ã«BTRFSãããããã§ã¯ãªããããããã«ããããªã»ãããè¡ãããLWMã確èªããŠãã®ããŒãã£ã·ã§ã³ãéžæããå¿
èŠããããŸããã
第äºã«ãBTRFSããã£ã¹ã¯ã«çŽæ¥æš¹èãäœããããããã¯ããã€ã¹ã«çŽæ¥æžã蟌ã¿ããããæåã«ç¬èªã®ãžã£ãŒãã«ãä¿æãããžã£ãŒãã«ã«æ
å ±ãæžã蟌ã¿ãBTRFSèªäœã®æ žããã»ã¹ãéå§ããããšããäºå®ãé ãã人ã¯ããŸãããã®ç·ã¯ãããçš®ã®èº«äœã®åããäœããã©ããã«äœããæžãçããŸãã å®éã«ã¯ãç§ãã¡ã®æž¬å®ã«ãããšãBTRFSã䜿çšããå Žåã®ããã©ãŒãã³ã¹ã倿ããŸããã ã©ããã«ã10åç®ã®è¥²æã§ãããã¯ããã€ã¹ããããããããã©ããã§ååã«åå²ãããŸãã-ãããBTRFSãç§ãã¡ã«äžãããã®ã§ãã
ç£èŠãµãŒãã¹ã«ãšã£ãŠéåžžã«ç·æ¥ã®åé¡ã§ããéçšéšéã¯ãäžè¬ã«ãBTRFSã§å æãããŠããã¹ããŒã¹ã®éã空ãã¹ããŒã¹ã®éãã©ã®ããã«çè§£ãããã§ãã ãããŠãæå€§ã®åé¡ã¯ãå Žæãããããã«èŠããããååšããªãããã«èŠããããšã§ããããã¯ã©ããã«ãªããªã£ãŠãããã¡ã¿æ¥ä»ãèšããã§ããŠãããã€ãã®ãã¡ã€ã«ããããå®è¡ããå¿
èŠãããããšãçè§£ããŠããŸããªãã©ã³ã¹ããããŠããªãã¯ããŒã¯ã«è¿ã¥ããŠãããIOã¯ãã§ã«èŠããã§ããããªãã©ã³ã¹ãããŠããŸãã æ²ãã¿ã

éå»1ã2幎ã«ãããBTRFSã®å©ç¹ã®ãã¡ããããæ£åžžã«æ©èœããå°ãªããšãäºæ³ã©ããDockerã§æ©èœããå¯äžã®ã¹ãã¬ãŒãžãã©ã€ããŒã§ãã 圌ãã¯åé¡ã解決ããããã§ãBTRFSãç§ãã¡ã®éžæã§ãã ç§ãã¡ã¯SSDã賌å
¥ããç§ãã¡ã¯çããç¥ã¯åœŒã«ããã©ãŒãã³ã¹ãç¥çŠãããããçè§£ããŸãã

ãããŠããã§ã¯ãå°ãåã«æ°ããã¹ãã¬ãŒãžãã©ã€ããŒã§ããOverlayFSã«æ³šç®ããŸããã ä»åŸããã®å®è£
ã«åãââçµãã§ãããæ¢ã«ãã¹ã段éãééããŠãããããã€ãã®ãã¹ããåããŠããããã¹ãã¯éåžžã«åªããŠãããšèšããŸãã
ç°è²ã®FSãšãªãŒããŒã¬ã€ã®èµ€ãå¡ãã€ã¶ãããŸãŸã«ããŠããã®ã¯ãªãã§ããïŒ ããŒãžã§ã³3.18以éãå¥ã®ååã§ã«ãŒãã«ã«å
¥ããåã«ãªãŒããŒã¬ã€ãšããã¢ãžã¥ãŒã«ã®ååã§ã«ãŒãã«ã«å
¥ããŸããã ã«ãŒãã«ã«çµã¿èŸŒãŸããOverlayFSã¢ãžã¥ãŒã«ãé·ãéè¡ã£ãŠããããšã誰ããç¥ã£ãŠããŸããïŒ ç§ãç¥ããŸãã ãªãŒããŒã¬ã€ã«é¢ããæ°ããã¹ã©ã€ãã¯ãããŸãããå
é±ãæåéãæºåãã§ããŠããæ
å ±ãèšããŸãã ãã¹ãã«ãããšãäœæ¥ã®é床ãEX4ã«åºã¥ãOverlayFSã䜿çšããå¿çæéãDockerããã®ãªãŒããŒãããã®å²åã¯ããšã©ãŒã®ç¯å²å
ã§æå€§3-5ïŒ
ã§ããã , . , â 3.18, , .. , .
Overlay FS BTRFS , , -. BTRFS, , . BTRFS, .. , , , , , , â , . , , , , , . Overlay . , performance / , ? , , DF. , , . ãã£ãããã ã€ãŸã , , ! , , , .

, . , , . , , .. cmd, , - ?
, â Entrypoint, - .., , - Docker cmd .

ãªããªã , , entrypoint â . - . , , S6, . , init- Docker-. , , , , .. , . , - . . , , .
-, -, , â From Dockerfile. . , . -, - â Docker. , , , - . ã€ãŸã , , . - , , . ã€ãŸã .
, , . Docker 1.6, -. docker.exec, -, -, . , , exec , , , -, .. , - - , find - , , cut . , Docker inspect', name-space , exec', url', , , . 1.7, 1.8, garbage collector, , exec', . , , , , .

, - , -, , Docker, , , . , , , - .

, - . , , , .

? , , - , , , . ? - - , zypper - , - update' , , , , . , , . , - , , , .

, , , application production, , , RPM- , , . - , , .. ã€ãŸã , , .

- , , Dockerfile , . . , puppet. docker_build.

? . Dockerfile' . / , . , , . Registry, , , - , , . , , , .

. - JIRA , , , . . , , «», . , puppet' - config', rebuild. ã€ãŸã , , , , config', . , ( ) , , , success registry, .

Docker , , . , docker , - . , .. , - Graphite, .

? Docker CLI , docker stats, CPU . SAR . SAR' . - docker , Graphite. . ? . , - FS, . Graphite. , , , , Docker , Zabbix'.

, . , , , , . , , , CPU.

.âŠ

, , .

CPU.

, â , , , , . , , - , . , baDocker, .

- , , â , ,
- . â Clientless. , Docker API,
-?
- Registry â . 1 2, Registry. ãããŠ
Docker, Registry v2.
- , - , ( ). , ,
.
- , - , « , ,
, ». , .
- , â Dashboard, , « , , ,
, , ».

. ã€ãŸã Summary , , , , , , .

, , . , , .

, - , - , , « shell »âŠ

, , , .

, , .. â : «, , ».

â , Docker, , , , , , . , , , â , , .
é£çµ¡å
»
a.turetsky@corp.badoo.com»
twitter»
Badooâ HighLoad++ . 2016 â HighLoad++ , 7 8 .
HighLoad++ 2016 DevOps, docker', :
ãŸãããããã®è³æã®äžéšã¯ãé«è² è·ã·ã¹ãã HighLoadã®éçºã«é¢ãããªã³ã©ã€ã³ãã¬ãŒãã³ã°ã³ãŒã¹ã§äœ¿çšãããŸãã¬ã€ãã¯ãç¹å¥ã«éžæãããæåãèšäºãè³æããããªã®ãã§ãŒã³ã§ããç§ãã¡ã®æç§æžã«ã¯ãã§ã«30以äžã®ãŠããŒã¯ãªè³æããããŸããæ¥ç¶ããŠãã ããïŒ