Ê×Ò³
ѧϰ
»î¶¯
רÇø
¹¤¾ß
TVP
·¢²¼
¾«Ñ¡ÄÚÈÝ/¼¼ÊõÉçȺ/ÓŻݲúÆ·,¾¡ÔÚС³ÌÐò
Á¢¼´Ç°Íù

ÍƼö5¿îºÃÓõĿªÔ´Docker¹¤¾ß

Docker ÉçÇøÒѾ­´´½¨ÁËÐí¶à¿ªÔ´¹¤¾ß£¬ËüÃÇÄÜ°ïÎÒÃÇ´¦Àí¸÷ÖÖÓÃÀý¡£×÷ÕßÔÚ±¾ÎÄÖÐÍƼöÁË 5 ¿îÈÏΪ×îÓÐÓÃµÄ Docker ¹¤¾ß£¬·Ö±ðÊÇ Watchtower£¨×Ô¶¯¸üРDocker ÈÝÆ÷£©¡¢docker-gc£¨ÈÝÆ÷ºÍ¾µÏñµÄÀ¬»ø»ØÊÕ£©¡¢docker-slim£¨ÈÝÆ÷ÊÝÉí£©¡¢ rocker£ºÍ»ÆÆ Dockerfile µÄÏÞÖÆ£¬ÒÔ¼° ctop£¨ÈÝÆ÷µÄÀඥ²ã½Ó¿Ú£©¡£

Docker ÉçÇøÒѾ­´´½¨ÁËÐí¶à¿ªÔ´¹¤¾ß£¬ËüÃÇËùÄÜ°ïÄã´¦ÀíµÄÓÃÀýÉõÖÁ»á³¬³öÄãµÄÏëÏó¡£

Äã¿ÉÒÔÔÚÍøÉÏÕÒµ½ºÜ¶à¿áìÅµÄ Docker ¹¤¾ß£¬ÆäÖд󲿷ÖÊÇ¿ªÔ´µÄ£¬¶¼¿ÉÒÔÔÚ Github ÉÏÕÒµ½¡£ÔÚ¹ýÈ¥µÄÁ½ÄêÀÎҷdz£ÈÈÖÔÓÚ Docker£¬ÔÚ´ó¶àÊý¿ª·¢ÏîÄ¿Öж¼Ê¹ÓÃÁËËü¡£µ±Ä㿪ʼʹÓà Docker ºó£¬Äã»á·¢ÏÖËüÊÊÓõij¡¾°±ÈÄã×î³õÔ¤ÏëµÄ»¹¸ü¶à¡£Äã»áÏ£Íû Docker ¾¡¿ÉÄÜΪÄã¶à×öÒ»µãÊ£¬¶øËü²»»áÈÃÄãʧÍûµÄ£¡

Docker ÉçÇø·Ç³£»îÔ¾£¬Ã¿Ì춼»á³öÏÖÐí¶àÓÐÓõŤ¾ß£¬Ê±Ê±¹Ø×¢ÉçÇøÖз¢ÉúµÄËùÓд´ÐÂÊǺÜÀ§Äѵġ£ÎªÁË°ïÖúÄ㣬ÎÒÊÕ¼¯ÁËһЩÎÒÔÚÈÕ³£¹¤×÷ÖÐʹÓõÄÓÖÓÐȤÓÖʵÓÃµÄ Docker ¹¤¾ß£¬ÕâЩ¹¤¾ßÌáÉýÁËÎҵŤ×÷ЧÂÊ£¬¼õÉÙÁËÔ­±¾ÐèÒªÊÖ¹¤Íê³ÉµÄ¹¤×÷¡£

ÒÔϾÍÊÇÎÒÒªÏò´ó¼ÒÍƼöµÄÎå¿îʵÓù¤¾ß¡£

1. watchtower£º×Ô¶¯¸üРDocker ÈÝÆ÷

Watchtower ¼àÊÓÔËÐÐÈÝÆ÷²¢¼àÊÓÕâЩÈÝÆ÷×î³õÆô¶¯Ê±µÄ¾µÏñÓÐûÓб䶯¡£µ± Watchtower ¼ì²âµ½Ò»¸ö¾µÏñÒѾ­Óб䶯ʱ£¬Ëü»áʹÓÃоµÏñ×Ô¶¯ÖØÐÂÆô¶¯ÏàÓ¦µÄÈÝÆ÷¡£ÎÒÏëÔÚÎҵı¾µØ¿ª·¢»·¾³Öг¢ÊÔ×îÐµĹ¹½¨¾µÏñ£¬ËùÒÔʹÓÃÁËËü¡£

Watchtower ±¾Éí±»´ò°üΪ Docker ¾µÏñ£¬Òò´Ë¿ÉÒÔÏñÔËÐÐÈκÎÆäËûÈÝÆ÷Ò»ÑùÔËÐÐËü¡£ÒªÔËÐÐ Watchtower£¬ÄãÐèÒªÖ´ÐÐÒÔÏÂÃüÁ

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
$?docker?run?-d?--name?watchtower?--rm?-v?/var/run/docker.sock:/var/run/docker.sock?v2tec/watchtower?--interval?30?

ÔÚÉÏÃæµÄÃüÁîÖУ¬ÎÒÃÇʹÓÃÒ»¸ö¹ÒÔØÎļþ /var/run/docker.sock Æô¶¯ÁË Watchtower ÈÝÆ÷¡£Õâô×öÊÇÓбØÒªµÄ£¬ÎªµÄÊÇʹ Watchtower ¿ÉÒÔÓë Docker ÊØ»¤ API ½øÐн»»¥¡£ÎÒÃǽ« 30 Ãë´«µÝ¸ø¼ä¸ôÑ¡Ïî interval¡£´ËÑ¡ÏÒåÁË Watchtower µÄÂÖѯ¼ä¸ô¡£Watchtower Ö§³Ö¸ü¶àµÄÑ¡ÏÄã¿ÉÒÔ¸ù¾ÝÎĵµÖеÄÃèÊöÀ´Ê¹ÓÃËüÃÇ¡£

ÎÒÃÇÏÖÔÚÆô¶¯Ò»¸ö Watchtower ¿ÉÒÔ¼àÊÓµÄÈÝÆ÷¡£

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
$?docker?run?-p?4000:80?--name?friendlyhello?shekhargulati/friendlyhello:latest?

ÏÖÔÚ£¬Watchtower ½«¿ªÊ¼Îº͵ؼà¿ØÕâ¸ö friendlyhello ÈÝÆ÷¡£µ±ÎÒ½«Ð¾µÏñÍÆË͵½ Docker Hub ʱ£¬Watchtower ÔÚ½ÓÏÂÀ´µÄÔËÐÐÖн«¼ì²âµ½Ò»¸öеĿÉÓõľµÏñ¡£Ëü½«ÓÅÑŵØÍ£Ö¹ÄǸöÈÝÆ÷²¢Ê¹ÓÃÕâ¸öоµÏñÆô¶¯ÈÝÆ÷¡£Ëü½«´«µÝÎÒÃÇ֮ǰ´«µÝ¸øÕâÌõ run ÃüÁîµÄÑ¡Ïî¡£»»¾ä»°Ëµ£¬¸ÃÈÝÆ÷½«ÈÔȻʹÓà 4000:80 ·¢²¼¶Ë¿ÚÀ´Æô¶¯¡£

ĬÈÏÇé¿öÏ£¬Watchtower ½«ÂÖѯ Docker Hub ×¢²á±íÒÔ²éÕÒ¸üеľµÏñ¡£Í¨¹ý´«µÝ»·¾³±äÁ¿ REPO_USER ºÍ REPO_PASS ÖеÄ×¢²á±íƾ¾Ý£¬¿ÉÒÔ½« Watchtower ÅäÖÃΪÂÖѯ˽ÓÐ×¢²á±í¡£

ÒªÁ˽â¸ü¶à Watchtower µÄÏà¹ØÐÅÏ¢£¬½¨ÒéÄãÔĶÁ Watchtower Îĵµ

https://github.com/v2tec/watchtower/blob/master/README.md

GitHub µØÖ·£º

https://github.com/v2tec/watchtower

2. docker-gc£ºÈÝÆ÷ºÍ¾µÏñµÄÀ¬»ø»ØÊÕ

Docker-gc ¹¤¾ßͨ¹ýɾ³ý²»ÐèÒªµÄÈÝÆ÷ºÍ¾µÏñÀ´°ïÄãÇåÀí Docker Ö÷»ú¡£Ëü»áɾ³ý´æÔÚ³¬¹ýÒ»¸öСʱµÄËùÓÐÈÝÆ÷¡£´ËÍ⣬Ëü»¹É¾³ý²»ÊôÓÚÈκÎÁôÖÃÈÝÆ÷µÄ¾µÏñ¡£

Äã¿ÉÒÔ½« docker-gc ×÷Ϊ½Å±¾ºÍÈÝÆ÷À´Ê¹Óá£ÎÒÃǽ«ÒÔÈÝÆ÷µÄÐÎʽÔËÐÐ docker-gc¡£ÈôҪʹÓà docker-gc À´²éÕÒËùÓпÉÒÔɾ³ýµÄÈÝÆ÷ºÍ¾µÏñ£¬ÃüÁîÈçÏ£º

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
$?docker?run?--rm?-v?/var/run/docker.sock:/var/run/docker.sock?-e?DRY?RUN=1?spotify/docker-gc?

ÉÏÊöÃüÁîÖУ¬ÎÒÃǼÓÔØÁË docker.sock Îļþ£¬ÒÔ±ã docker-gc Äܹ»Óë Docker API ½»»¥¡£ÎÒÃÇ´«µÝÁËÒ»¸ö»·¾³±äÁ¿ DRY_RUN=1 À´²éÕÒ½«±»É¾³ýµÄÈÝÆ÷ºÍ¾µÏñ¡£Èç¹û²»Ìṩ¸Ã²ÎÊý£¬docker-gc »áɾ³ýËùÓÐÈÝÆ÷ºÍ¾µÏñ¡£×îºÃÊÂÏÈÈ·ÈÏ docker-gc Ҫɾ³ýµÄÄÚÈÝ¡£ÉÏÊöÃüÁîµÄÊä³öÈçÏÂËùʾ£º

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
[2017-04-28T06:27:24]?[INFO]?:?The?following?container?would?have?been?removed?0c1b3b0972bb792bee508?60c35a4?bc08ba32b527d53eab173d12a15c28deb931/vibrant_?yonath?[2017-04-28T06:27:24]?[INFO]?:?The?following?container?would?have?been?removed?2a72d41e4b25e2782f7844e188643e395650a9ecca660e7a0dc2b7989e5acc28??/friendlyhello_?web?[2017-04-28T06:27:24]?[INFO]?:?The?following?image?would?have?been?removed?sha256:00f017a8c2a6e1?fe2f?fd05c281?f27d069d2a99323a8cd514dd35f228ba26d2ff?[busybox:?latest]?[2017-04-28T06:27:24]?[?INFO]?:?The?following?image?would?have?been?removed?sha256?:4a323b466a5ac4ce6524?8dd970b538922c54e535700cafe9448b52a3094483ea?[hello-world:latest]?[2017-04-28T06:27:24]?[INFO]?:?The?following?image?would?have?been?removed?sha256:4a323b4?66a5ac4ce65248dd970b538922c54e535700cafe9448b52a3094483ea?[python:2.7-slim]?

Èç¹ûÄãÈÏͬ docker-gc ÇåÀí·½°¸£¬ ¿ÉÒÔ²»Ê¹Óà DRY_RUN ÔÙ´ÎÔËÐÐ docker-gc Ö´ÐÐÇå¿Õ²Ù×÷¡£

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
$?docker?run?--rm?-v?/var/run/docker.sock:/var/run/docker.sock?spotify/docker-gc?

docker-gc »¹Ö§³ÖһЩÆäËûµÄÑ¡Ïî¡£½¨ÒéÄãÔĶÁ docker-gc ÎĵµÒÔÁ˽â¸ü¶àÏà¹ØÐÅÏ¢£º

https://github.com/spotify/docker-gc/blob/master/README.md

GitHub µØÖ·£º

https://github.com/spotify/docker-gc

3. docker-slim£ºÃæÏòÈÝÆ÷µÄÉñÆæ¼õ·ÊÒ©

Èç¹ûÄãµ£ÐÄÄãµÄ Docker ¾µÏñµÄ´óС£¬docker-slim ¿ÉÒÔ°ïÄãÅÅÓǽâÄÑ¡£

docker-slim ¹¤¾ßʹÓþ²Ì¬ºÍ¶¯Ì¬·ÖÎö·½·¨À´ÎªÄãÓ·Ö׵ľµÏñÊÝÉí¡£ÒªÊ¹Óà docker-slim£¬¿ÉÒÔ´Ó Github ÏÂÔØ Linux »òÕß Mac µÄ¶þ½øÖÆ°²×°°ü¡£³É¹¦ÏÂÔØÖ®ºó£¬½«Ëü¼ÓÈëµ½ÄãµÄϵͳ±äÁ¿ PATH ÖС£

Ϊ¾ÙÀýÐèÒª£¬ÎҲο¼ Docker ¹Ù·½Îĵµ´´½¨ÁËÒ»¸öÃûΪ friendlyhello µÄ Docker ¾µÏñ£¬¸Ã¾µÏñ´óСΪ 194MB£¨ÈçÏÂËùʾ£©£º

Äã¿ÉÒÔ¿´µ½£¬¶ÔÓÚÒ»¸ö¼òµ¥µÄÓ¦ÓóÌÐò£¬ÎÒÃDZØÐëÏÂÔØ 194 MB µÄÊý¾Ý¡£ÈÃÎÒÃÇÓà docker-slim À´¿´¿´ËüÄܼõµô¶àÉÙÖ¬·¾¡£

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
$?docker-slim?build?--http-probe?friendlyhello?

docker-slim ¹¤¾ß¶ÔÅÖ¾µÏñ½øÐÐһϵÁеļì²é¡¢²âÁ¿£¬×îÖÕ´´½¨Ò»¸öÊÝ°æ±¾µÄ¾µÏñ¡£ÈÃÎÒÃÇ¿´¿´Õâ¸ö¼õ¹ý·ÊµÄ´óС°É¡£

ÕýÈçÄãËù¿´µ½µÄ£¬¾µÏñ´óС±»¼õÉÙµ½ 24.9 MB¡£Äã¿ÉÒÔÆô¶¯Õâ¸öÈÝÆ÷£¬Ëü½«ÒÔͬÑùµÄ·½Ê½ÔËÐС£docker-slim ¹¤¾ßÖ§³Ö Java¡¢Python¡¢Ruby ºÍ Node.js Ó¦Óá£

Äã×Ô¼ºÊÔÊÔ£¬¿´¿´ÄܼõÏÂÀ´¶àÉÙ¡£ÔÚÎҵĸöÈËÏîÄ¿ÖУ¬ÎÒ·¢ÏÖËüÔÚ´ó¶àÊýÇé¿ö϶¼ÊÊÓá£Äã¿ÉÒÔ´ÓÆäÎĵµÖÐÁ˽â¸ü¶à¹ØÓÚ docker-slim µÄÐÅÏ¢£º

https://github.com/docker-slim/docker-slim/blob/master/README.md

GitHub µØÖ·£º

https://github.com/docker-slim/docker-slim

4. rocker£ºÍ»ÆÆ Dockerfile µÄÏÞÖÆ

´ó¶àÊýʹÓà Docker µÄ¿ª·¢ÈËÔ±¶¼Ê¹Óà Dockerfile À´¹¹½¨¾µÏñ¡£Dockerfile ÊÇÒ»ÖÖÉùÃ÷ʽµÄ·½·¨£¬ÓÃÓÚ¶¨ÒåÓû§¿ÉÒÔÔÚÃüÁîÐÐÉϵ÷ÓõÄËùÓÐÃüÁ´Ó¶ø×é×°¾µÏñ¡£

Rocker£¨https://github.com/grammarly/rocker£©Îª Dockerfile Ö¸ÁÔö¼ÓÁËеÄÖ¸Áî¡£Grammarly ΪÁ˽â¾öËûÃÇÓöµ½µÄ Dockerfile ¸ñʽµÄÎÊÌ⣬´´½¨ÁË Rocker¡£Grammarly ÍŶÓдÁËһƪÉîÈëµÄ²©¿Í£¬½âÊÍËûÃÇ´´½¨ËüµÄÔ­Òò¡£ÎÒ½¨ÒéÄã¶ÁÒ»¶Á£¬ÒÔ¸üºÃµØÁ˽â Rocker¡£ËûÃÇÔÚ²©ÎÄÖÐÇ¿µ÷ÁËÁ½¸öÎÊÌ⣺

  1. Docker ¾µÏñµÄ´óС¡£
  2. »ºÂýµÄ¹¹½¨Ëٶȡ£

¸Ã²©¿Í»¹Ìáµ½ÁË Rocker ¼ÓÈëµÄһЩÐÂÖ¸Áî¡£²Î¿¼ Rocker Îĵµ£¬Á˽â Rocker Ö§³ÖµÄËùÓÐÖ¸Á

https://github.com/grammarly/rocker/blob/master/README.md

  1. MOUNT ÓÃÓÚÔÚ¹¹½¨Ö®¼ä¹²Ïí¾í£¬ÒÔ±ãÄܹ»±»ÒÀÀµÏî¹ÜÀí¹¤¾ßÖØÓá£
  2. ÔÚ Dockerfile ÖÐÔ­±¾ÒÑÓÐ FROM Ö¸Áî¡£¶ø Rocker ʹÎÒÃÇ¿ÉÒÔÌí¼ÓÒ»ÌõÒÔÉ쵀 FROM Ö¸Áî¡£ÕâÒâζ×ÅÄã¿ÉÒÔͨ¹ýµ¥¸ö Rockerfile ´´½¨¶à¸ö¾µÏñ¡£µÚÒ»ÅúÖ¸ÁîÓÃÓÚ¹¹½¨²úÆ·ËùÓеÄÒÀÀµ£»µÚ¶þÅúÖ¸ÁîÓÃÓÚ¹¹½¨²úÆ·£»ÕâÄܹ»¼«´óµØ½µµÍ¾µÏñ´óС¡£
  3. TAG ÓÃÓÚÔÚ¹¹½¨µÄ²»Í¬½×¶Î±êʶ¾µÏñ£¬ÕâÒâζ×ÅÄã²»±ØÊÖ¶¯ÎªÃ¿¸ö¾µÏñ´ò±êÇ©¡£
  4. PUSH ÓÃÓÚ½«¾µÏñÍÆË͵½¾µÏñ²Ö¿â¡£
  5. ATTACH ʹÄãÄܹ»½»»¥Ê½µØÔËÐÐÖм䲽Öè¡£ÕâÒ»µã¶ÔÓÚµ÷ÊԷdz£ÓÐÓá£

ҪʹÓà Rocker£¬Ê×ÏȱØÐëÔÚÄãµÄ»úÆ÷ÉÏ°²×°¡£¶Ô Mac Óû§À´Ëµ£¬¾ÍÊǼòµ¥µØÔËÐм¸Ìõ brew ÃüÁ

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
$?brew?tap?grammarly/tap$?brew?install?grammarly/tap/rocker?

Ò»µ©Íê³É°²×°£¬Äã¾Í¿ÉÒÔͨ¹ý´«µÝ Rockerfile ʹÓà Rocker À´¹¹½¨¾µÏñÁË£º

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
FROM?python:2.7-slimWORKDIR?/appADD?.?/appRUN?pip?install?-r?requirements.?txtEXPOSE?80ENV?NAME?WorldCMD?["python","app.Py"]TAG?shekhargulati/?friendlyhello:{{?.VERSION?}}PUSH?shekhargulati/friendlyhello:{{?.VERSION?}}?

ÈôÒª¹¹½¨Ò»¸ö¾µÏñ²¢½«ÆäÍÆË͵½ Docker Hub£¬Äã¿ÉÒÔÔËÐÐÒÔÏÂÃüÁ

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
$?rocker?d?build?--push?-var?VERSION-1.0?

GitHub µØÖ·£º

https://github.com/grammarly/rocker

5. ctop£ºÈÝÆ÷µÄÀඥ²ã½Ó¿Ú

ctop ÊÇÎÒ×î½ü¿ªÊ¼Ê¹ÓõÄÒ»¸ö¹¤¾ß£¬ËüÄܹ»Ìṩ¶à¸öÈÝÆ÷µÄʵʱָ±êÊÓͼ¡£Èç¹ûÄãÊÇÒ»¸ö Mac Óû§£¬¿ÉÒÔʹÓà brew °²×°£¬ÈçÏÂËùʾ£º

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
$?brew?install?ctop?

Ò»µ©Íê³É°²×°£¬¾Í¿ÉÒÔ¿ªÊ¼Ê¹Óà ctop ÁË¡£ÏÖÔÚ£¬ÄãÖ»ÐèÒªÅäÖà DOCKER_HOST »·¾³±äÁ¿¡£

Äã¿ÉÒÔÔËÐÐ ctop ÃüÁ²é¿´ËùÓÐÈÝÆ÷µÄ״̬¡£

ÈôÖ»Ïë²é¿´ÕýÔÚÔËÐеÄÈÝÆ÷£¬¿ÉÒÔʹÓà ctop -a ÃüÁî¡£

ctop ÊÇÒ»¸ö¼òµ¥µÄ¹¤¾ß£¬¶ÔÓÚÁ˽âÔÚÄãµÄÖ÷»úÉÏÔËÐеÄÈÝÆ÷ºÜÓаïÖú¡£Äã¿ÉÒÔÔÚ ctop ÎĵµÖÐÁ˽â¸ü¶àÏà¹ØÐÅÏ¢£º

https://github.com/bcicen/ctop/blob/master/README.md

GitHub µØÖ·£º

https://github.com/bcicen/ctop

ÒÔÉÏÊÇÎÒ·¢ÏֵĺÜÓÐÓÃµÄ 5 ¿î Docker ¹¤¾ß¡£ÄãÔÚÈÕ³£¹¤×÷ÖÐʹÓà Docker ¹¤¾ßÂð£¿Ï£ÍûÕâЩ¹¤¾ßÄܹ»ÎªÄã´øÀ´°ïÖú£¬Ò²»¶Ó­ÔÚÆÀÂÛÖÐÍƼöÄã¾õµÃÓÐÓõŤ¾ß¡£

  • ·¢±íÓÚ:
  • Ô­ÎÄÁ´½Ó£ºhttp://news.51cto.com/art/201912/607845.htm
  • ÈçÓÐÇÖȨ£¬ÇëÁªÏµ cloudcommunity@tencent.com ɾ³ý¡£

ɨÂë

Ìí¼ÓÕ¾³¤ ½ø½»Á÷Ⱥ

ÁìȡרÊô 10ÔªÎÞÃż÷ȯ

˽Ïí×îР¼¼Êõ¸É»õ

ɨÂë¼ÓÈ뿪·¢ÕßÉçȺ
Áìȯ
http://www.vxiaotou.com