±à¼ÍƼö: |
Ö÷ÒªÊǽéÉÜÁËʲôÊÇÈÝÆ÷¡¢
ΪʲôÐèÒªÈÝÆ÷£¿How - ÈÝÆ÷ÊÇÈçºÎ¹¤×÷µÄ£¿Docker¼Ü¹¹Ïê½â¡¢docker˽ÓоµÏñÖÐÐĴ¡¢Dockerfile¡¢docker×Ô¶¨ÒåÍøÂçÅäÖá¢Jenkins+DockerµÈµÈÏà¹ØÄÚÈÝ¡£
±¾ÎÄÀ´×ÔÓÚcsdn£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼¡¢ÍƼö¡£ |
|
What-ʲôÊÇÈÝÆ÷
ÈÝÆ÷ÊÇÒ»ÖÖÇáÁ¿¼¶¡¢¿ÉÒÆÖ²¡¢×Ô°üº¬µÄÈí¼þ´ò°ü¼¼Êõ£¬Ê¹Ó¦ÓóÌÐò¿ÉÒÔÔÚ¼¸ºõÈκεط½ÒÔÏàͬµÄ·½Ê½ÔËÐС£¿ª·¢ÈËÔ±ÔÚ×Ô¼º±Ê¼Ç±¾ÉÏ´´½¨²¢²âÊԺõÄÈÝÆ÷£¬ÎÞÐèÈκÎÐ޸ľÍÄܹ»ÔÚÉú²úϵͳµÄÐéÄâ»ú¡¢ÎïÀí·þÎñÆ÷»ò¹«ÓÐÔÆÖ÷»úÉÏÔËÐС£
ÈÝÆ÷ÓëÐéÄâ»ú
̸µ½ÈÝÆ÷£¬¾Í²»µÃ²»½«ËüÓëÐéÄâ»ú½øÐжԱȣ¬ÒòΪÁ½Õß¶¼ÊÇΪӦÓÃÌṩ·â×°ºÍ¸ôÀë¡£
ÈÝÆ÷ÓÉÁ½²¿·Ö×é³É£º
Ó¦ÓóÌÐò±¾Éí
ÒÀÀµ£º±ÈÈçÓ¦ÓóÌÐòÐèÒªµÄ¿â»òÆäËûÈí¼þ
ÈÝÆ÷ÔÚ Host ²Ù×÷ϵͳµÄÓû§¿Õ¼äÖÐÔËÐУ¬Óë²Ù×÷ϵͳµÄÆäËû½ø³Ì¸ôÀë¡£ÕâÒ»µãÏÔÖøÇø±ðÓÚµÄÐéÄâ»ú¡£
´«Í³µÄÐéÄ⻯¼¼Êõ£¬±ÈÈç VMWare, KVM, Xen£¬Ä¿±êÊÇ´´½¨ÍêÕûµÄÐéÄâ»ú¡£ÎªÁËÔËÐÐÓ¦Ó㬳ýÁ˲¿ÊðÓ¦Óñ¾Éí¼°ÆäÒÀÀµ£¨Í¨³£¼¸Ê®
MB£©£¬»¹µÃ°²×°Õû¸ö²Ù×÷ϵͳ£¨¼¸Ê® GB£©¡£
ÏÂͼչʾÁ˶þÕßµÄÇø±ð¡£

ÈçͼËùʾ£¬ÓÉÓÚËùÓеÄÈÝÆ÷¹²Ïíͬһ¸ö Host OS£¬ÕâʹµÃÈÝÆ÷ÔÚÌå»ýÉÏÒª±ÈÐéÄâ»úСºÜ¶à¡£ÁíÍ⣬Æô¶¯ÈÝÆ÷²»ÐèÒªÆô¶¯Õû¸ö²Ù×÷ϵͳ£¬ËùÒÔÈÝÆ÷²¿ÊðºÍÆô¶¯Ëٶȸü¿ì£¬¿ªÏú¸üС£¬Ò²¸üÈÝÒ×Ç¨ÒÆ¡£
Why - ΪʲôÐèÒªÈÝÆ÷£¿
ΪʲôÐèÒªÈÝÆ÷£¿ÈÝÆ÷µ½µ×½â¾öµÄÊÇʲôÎÊÌ⣿
¼òÒªµÄ´ð°¸ÊÇ£ºÈÝÆ÷ʹÈí¼þ¾ß±¸Á˳¬Ç¿µÄ¿ÉÒÆÖ²ÄÜÁ¦¡£
ÈÝÆ÷½â¾öµÄÎÊÌâ
ÎÒÃÇÀ´¿´¿´½ñÌìµÄÈí¼þ¿ª·¢ÃæÁÙ×ÅÔõÑùµÄÌôÕ½£¿
Èç½ñµÄϵͳÔڼܹ¹ÉϽÏÊ®ÄêǰÒѾ±äµÃ·Ç³£¸´ÔÓÁË¡£ÒÔǰ¼¸ºõËùÓеÄÓ¦Óö¼²ÉÓÃÈý²ã¼Ü¹¹£¨Presentation/Application/Data£©£¬ÏµÍ³²¿Êðµ½ÓÐÏ޵ļ¸Ì¨ÎïÀí·þÎñÆ÷ÉÏ£¨Web
Server/Application Server/Database Server£©¡£
¶ø½ñÌ죬¿ª·¢ÈËԱͨ³£Ê¹ÓöàÖÖ·þÎñ£¨±ÈÈç MQ£¬Cache£¬DB£©¹¹½¨ºÍ×é×°Ó¦Ó㬶øÇÒÓ¦ÓúܿÉÄܻᲿÊðµ½²»Í¬µÄ»·¾³£¬±ÈÈçÐéÄâ·þÎñÆ÷£¬Ë½ÓÐÔÆºÍ¹«ÓÐÔÆ¡£

Ò»·½ÃæÓ¦Óðüº¬¶àÖÖ·þÎñ£¬ÕâЩ·þÎñÓÐ×Ô¼ºËùÒÀÀµµÄ¿âºÍÈí¼þ°ü£»ÁíÒ»·½Ãæ´æÔÚ¶àÖÖ²¿Êð»·¾³£¬·þÎñÔÚÔËÐÐʱ¿ÉÄÜÐèÒª¶¯Ì¬Ç¨ÒƵ½²»Í¬µÄ»·¾³ÖС£Õâ¾Í²úÉúÁËÒ»¸öÎÊÌ⣺
ÈçºÎÈÃÿÖÖ·þÎñÄܹ»ÔÚËùÓеIJ¿Êð»·¾³ÖÐ˳ÀûÔËÐУ¿
ÓÚÊÇÎÒÃǵõ½ÁËÏÂÃæÕâ¸ö¾ØÕó£º

¸÷ÖÖ·þÎñºÍ»·¾³Í¨¹ýÅÅÁÐ×éºÏ²úÉúÁËÒ»¸ö´ó¾ØÕ󡣿ª·¢ÈËÔ±ÔÚ±àд´úÂëʱÐèÒª¿¼ÂDz»Í¬µÄÔËÐл·¾³£¬ÔËάÈËÔ±ÔòÐèҪΪ²»Í¬µÄ·þÎñºÍƽ̨ÅäÖû·¾³¡£¶ÔËûÃÇË«·½À´Ëµ£¬Õâ¶¼ÊÇÒ»ÏîÀ§ÄѶø¼è¾ÞµÄÈÎÎñ¡£
ÈçºÎ½â¾öÕâ¸öÎÊÌâÄØ£¿
´ÏÃ÷µÄ¼¼ÊõÈËÔ±´Ó´«Í³µÄÔËÊäÐÐÒµÕÒµ½Á˴𰸡£
¼¸Ê®Äêǰ£¬ÔËÊäÒµÃæÁÙ×ÅÀàËÆµÄÎÊÌâ¡£

ÿһ´ÎÔËÊ䣬»õÖ÷Óë³ÐÔË·½¶¼»áµ£ÐÄÒò»õÎïÀàÐ͵IJ»Í¬¶øµ¼ÖÂËðʧ£¬±ÈÈ缸¸öÌúͰ´íÎóµØÑ¹ÔÚÁËÒ»¶ÑÏã½¶ÉÏ¡£ÁíÒ»·½Ã棬ÔËÊä¹ý³ÌÖÐÐèҪʹÓò»Í¬µÄ½»Í¨¹¤¾ßÒ²ÈÃÕû¸ö¹ý³ÌÍ´¿à²»¿°£º»õÎïÏÈ×°ÉϳµÔ˵½ÂëÍ·£¬Ð¶»õ£¬È»ºó×°ÉÏ´¬£¬µ½°¶ºóÓÖжÏ´¬£¬ÔÙ×°Éϻ𳵣¬µ½´ïÄ¿µÄµØ£¬×îºóж»õ¡£Ò»°ëÒÔÉϵÄʱ¼ä»¨·ÑÔÚ×°¡¢Ð¶»õÉÏ£¬¶øÇÒ°áÉϰáÏ»¹ÈÝÒ×Ë𻵻õÎï¡£
ÕâͬÑùÒ²ÊÇÒ»¸ö NxM µÄ¾ØÕó¡£

ÐÒÔ˵ÄÊÇ£¬¼¯×°ÏäµÄ·¢Ã÷½â¾öÕâ¸öÄÑÌâ¡£

ÈκλõÎÎÞÂÛ¸ÖÇÙ»¹ÊDZ£Ê±½Ý£¬¶¼±»·Åµ½¸÷×Եļ¯×°ÏäÖС£¼¯×°ÏäÔÚÕû¸öÔËÊä¹ý³ÌÖж¼ÊÇÃÜ·âµÄ£¬Ö»Óе½´ï×îÖÕÄ¿µÄµØ²Å±»´ò¿ª¡£±ê×¼¼¯×°Ïä¿ÉÒÔ±»¸ßЧµØ×°Ð¶¡¢ÖصþºÍ³¤Í¾ÔËÊä¡£ÏÖ´ú»¯µÄÆðÖØ»ú¿ÉÒÔ×Ô¶¯ÔÚ¿¨³µ¡¢ÂÖ´¬ºÍ»ð³µÖ®¼äÒÆ¶¯¼¯×°Ïä¡£¼¯×°Ïä±»ÓþΪÔËÊäÒµÓëÊÀ½çóÒ××îÖØÒªµÄ·¢Ã÷¡£

Docker ½«¼¯×°Ïä˼ÏëÔËÓõ½Èí¼þ´ò°üÉÏ£¬Îª´úÂëÌṩÁËÒ»¸ö»ùÓÚÈÝÆ÷µÄ±ê×¼»¯ÔËÊäϵͳ¡£Docker
¿ÉÒÔ½«ÈκÎÓ¦Óü°ÆäÒÀÀµ´ò°ü³ÉÒ»¸öÇáÁ¿¼¶¡¢¿ÉÒÆÖ²¡¢×Ô°üº¬µÄÈÝÆ÷¡£ÈÝÆ÷¿ÉÒÔÔËÐÐÔÚ¼¸ºõËùÓеIJÙ×÷ϵͳÉÏ¡£

Æäʵ£¬¡°¼¯×°Ï䡱 ºÍ ¡°ÈÝÆ÷¡± ¶ÔÓ¦µÄÓ¢Îĵ¥´Ê¶¼ÊÇ ¡°Container¡±¡£
¡°ÈÝÆ÷¡± ÊǹúÄÚÔ¼¶¨Ë׳ɵĽз¨£¬¿ÉÄÜÊÇÒòΪÈÝÆ÷±È¼¯×°Ïä¸ü³éÏ󣬸üÊʺÏÈí¼þÁìÓòµÄԹʰɡ£
ÎÒ¸öÈËÈÏΪ£ºÔÚÀÏÍâµÄ˼άÖУ¬¡°Container¡± Ö»Óõ½Á˼¯×°ÏäÕâÒ»¸öÒâ˼£¬Docker µÄ Logo
²»¾ÍÊÇÒ»¶Ñ¼¯×°ÏäÂð£¿

Docker µÄÌØÐÔ
ÎÒÃÇ¿ÉÒÔ¿´¿´¼¯×°Ïä˼ÏëÊÇÈçºÎÓë Docker ¸÷ÖÖÌØÐÔÏà¶ÔÓ¦µÄ¡£
ÌØÐÔ

ÈÝÆ÷µÄÓÅÊÆ
¶ÔÓÚ¿ª·¢ÈËÔ± - Build Once, Run Anywhere
ÈÝÆ÷Òâζ×Å»·¾³¸ôÀëºÍ¿ÉÖØ¸´ÐÔ¡£¿ª·¢ÈËÔ±Ö»ÐèΪӦÓô´½¨Ò»´ÎÔËÐл·¾³£¬È»ºó´ò°ü³ÉÈÝÆ÷±ã¿ÉÔÚÆäËû»úÆ÷ÉÏÔËÐС£ÁíÍ⣬ÈÝÆ÷»·¾³ÓëËùÔÚµÄ
Host »·¾³ÊǸôÀëµÄ£¬¾ÍÏñÐéÄâ»úÒ»Ñù£¬µ«¸ü¿ì¸ü¼òµ¥¡£
¶ÔÓÚÔËάÈËÔ± - Configure Once, Run Anything
Ö»ÐèÒªÅäÖúñê×¼µÄ runtime »·¾³£¬·þÎñÆ÷¾Í¿ÉÒÔÔËÐÐÈκÎÈÝÆ÷¡£ÕâʹµÃÔËάÈËÔ±µÄ¹¤×÷±äµÃ¸ü¸ßЧ£¬Ò»ÖºͿÉÖØ¸´¡£ÈÝÆ÷Ïû³ýÁË¿ª·¢¡¢²âÊÔ¡¢Éú²ú»·¾³µÄ²»Ò»ÖÂÐÔ¡£
How - ÈÝÆ÷ÊÇÈçºÎ¹¤×÷µÄ£¿
´ÓϽڿªÊ¼ÎÒÃǽ«Ñ§Ï°ÈÝÆ÷ºËÐÄ֪ʶµÄ×îÖ÷Òª²¿·Ö¡£Ê×ÏÈ»á½éÉÜ Docker µÄ¼Ü¹¹£¬È»ºó·ÖÕ½ÚÏêϸÌÖÂÛ
Docker µÄ¾µÏñ¡¢ÈÝÆ÷¡¢ÍøÂçºÍ´æ´¢¡£
Docker¼Ü¹¹Ïê½â
Docker µÄºËÐÄ×é¼þ°üÀ¨£º
Docker ¿Í»§¶Ë - Client
Docker ·þÎñÆ÷ - Docker daemon
Docker ¾µÏñ - Image
Registry
Docker ÈÝÆ÷ - Container
Docker ¼Ü¹¹ÈçÏÂͼËùʾ£º

Docker ²ÉÓõÄÊÇ Client/Server ¼Ü¹¹¡£¿Í»§¶ËÏò·þÎñÆ÷·¢ËÍÇëÇ󣬷þÎñÆ÷¸ºÔð¹¹½¨¡¢ÔËÐкͷַ¢ÈÝÆ÷¡£¿Í»§¶ËºÍ·þÎñÆ÷¿ÉÒÔÔËÐÐÔÚͬһ¸ö
Host ÉÏ£¬¿Í»§¶ËÒ²¿ÉÒÔͨ¹ý socket »ò REST API ÓëÔ¶³ÌµÄ·þÎñÆ÷ͨÐÅ¡£
Docker ¿Í»§¶Ë
×î³£ÓÃµÄ Docker ¿Í»§¶ËÊÇ docker ÃüÁͨ¹ý docker ÎÒÃÇ¿ÉÒÔ·½±ãµØÔÚ Host
ÉϹ¹½¨ºÍÔËÐÐÈÝÆ÷¡£
docker Ö§³ÖºÜ¶à²Ù×÷£¨×ÓÃüÁ£¬ºóÃæ»áÖð²½Óõ½¡£

³ýÁË docker ÃüÁîÐй¤¾ß£¬Óû§Ò²¿ÉÒÔͨ¹ý REST API Óë·þÎñÆ÷ͨÐÅ¡£
Docker ·þÎñÆ÷
Docker daemon ÊÇ·þÎñÆ÷×é¼þ£¬ÒÔ Linux ºǫ́·þÎñµÄ·½Ê½ÔËÐС£

Docker daemon ÔËÐÐÔÚ Docker host ÉÏ£¬¸ºÔð´´½¨¡¢ÔËÐС¢¼à¿ØÈÝÆ÷£¬¹¹½¨¡¢´æ´¢¾µÏñ¡£
ĬÈÏÅäÖÃÏ£¬Docker daemon Ö»ÄÜÏìÓ¦À´×Ô±¾µØ Host µÄ¿Í»§¶ËÇëÇó¡£Èç¹ûÒªÔÊÐíÔ¶³Ì¿Í»§¶ËÇëÇó£¬ÐèÒªÔÚÅäÖÃÎļþÖдò¿ª
TCP ¼àÌý£¬²½ÖèÈçÏ£º
1. ±à¼ÅäÖÃÎļþ /etc/systemd/system/multi
-user.target.wants/docker.service£¬ÔÚ»·¾³±äÁ¿ ExecStart
ºóÃæÌí¼Ó -H tcp://0.0.0.0£¬ÔÊÐíÀ´×ÔÈÎÒâ IP µÄ¿Í»§¶ËÁ¬½Ó¡£

Èç¹ûʹÓõÄÊÇÆäËû²Ù×÷ϵͳ£¬ÅäÖÃÎļþµÄλÖÿÉÄܻ᲻һÑù¡£
2.ÖØÆô Docker daemon¡£

3.·þÎñÆ÷ IP Ϊ 192.168.56.102£¬¿Í»§¶ËÔÚÃüÁîÐÐÀï¼ÓÉÏ
-H ²ÎÊý£¬¼´¿ÉÓëÔ¶³Ì·þÎñÆ÷ͨÐÅ¡£

info ×ÓÃüÁîÓÃÓڲ鿴 Docker ·þÎñÆ÷µÄÐÅÏ¢¡£
Docker ¾µÏñ
¿É½« Docker ¾µÏñ¿´×ÅÖ»¶ÁÄ£°å£¬Í¨¹ýËü¿ÉÒÔ´´½¨ Docker ÈÝÆ÷¡£
ÀýÈçij¸ö¾µÏñ¿ÉÄܰüº¬Ò»¸ö Ubuntu ²Ù×÷ϵͳ¡¢Ò»¸ö Apache HTTP Server ÒÔ¼°Óû§¿ª·¢µÄ
Web Ó¦Óá£
¾µÏñÓжàÖÖÉú³É·½·¨£º
¿ÉÒÔ´ÓÎÞµ½ÓпªÊ¼´´½¨¾µÏñ
Ò²¿ÉÒÔÏÂÔØ²¢Ê¹ÓñðÈË´´½¨ºÃµÄÏֳɵľµÏñ
»¹¿ÉÒÔÔÚÏÖÓоµÏñÉÏ´´½¨ÐµľµÏñ
ÎÒÃÇ¿ÉÒÔ½«¾µÏñµÄÄÚÈݺʹ´½¨²½ÖèÃèÊöÔÚÒ»¸öÎı¾ÎļþÖУ¬Õâ¸öÎļþ±»³Æ×÷ Dockerfile£¬Í¨¹ýÖ´ÐÐ
docker build <docker-file> ÃüÁî¿ÉÒÔ¹¹½¨³ö Docker ¾µÏñ£¬ºóÃæÎÒÃÇ»áÌÖÂÛ¡£
Docker ÈÝÆ÷
Docker ÈÝÆ÷¾ÍÊÇ Docker ¾µÏñµÄÔËÐÐʵÀý¡£
Óû§¿ÉÒÔͨ¹ý CLI£¨docker£©»òÊÇ API Æô¶¯¡¢Í£Ö¹¡¢Òƶ¯»òɾ³ýÈÝÆ÷¡£¿ÉÒÔÕâôÈÏΪ£¬¶ÔÓÚÓ¦ÓÃÈí¼þ£¬¾µÏñÊÇÈí¼þÉúÃüÖÜÆÚµÄ¹¹½¨ºÍ´ò°ü½×¶Î£¬¶øÈÝÆ÷ÔòÊÇÆô¶¯ºÍÔËÐн׶Ρ£
Registry
Registry ÊÇ´æ·Å Docker ¾µÏñµÄ²Ö¿â£¬Registry ·Ö˽Óк͹«ÓÐÁ½ÖÖ¡£
Docker Hub£¨https://hub.docker.com/£© ÊÇĬÈ쵀 Registry£¬ÓÉ
Docker ¹«Ë¾Î¬»¤£¬ÉÏÃæÓÐÊýÒÔÍò¼ÆµÄ¾µÏñ£¬Óû§¿ÉÒÔ×ÔÓÉÏÂÔØºÍʹÓá£
³öÓÚ¶ÔËÙ¶È»ò°²È«µÄ¿¼ÂÇ£¬Óû§Ò²¿ÉÒÔ´´½¨×Ô¼ºµÄ˽ÓÐ Registry¡£ºóÃæÎÒÃÇ»áѧϰÈçºÎ´î½¨Ë½ÓÐ Registry¡£
docker pull ÃüÁî¿ÉÒÔ´Ó Registry ÏÂÔØ¾µÏñ¡£
docker run ÃüÁîÔòÊÇÏÈÏÂÔØ¾µÏñ£¨Èç¹û±¾µØÃ»ÓУ©£¬È»ºóÔÙÆô¶¯ÈÝÆ÷¡£
docker˽ÓоµÏñÖÐÐĴ
ÀÈ¡registry2°æ±¾µÄ¾µÏñ²¢Æô¶¯¾µÏñÈÝÆ÷£¬-vÉèÖÃÓ³É䵨ַ(±¾»ú£ºÈÝÆ÷)£¬Ó³Éä¶Ë¿ÚºÅ
docker run -d -v /opt/registry: /var/lib/registry
-p 5000:5000 registry:2
ÐÞ¸ÄÐèÒªÉÏ´«ÖÁ˽ÓоµÏñÖÐÐÄµÄ ¾µÏñÃû³Æ
docker tag task-web-server: 2.20.1 192.168.5.206:5000/dmp/task -web-server:2.20.1
ºìÉ«£ºÎª¾µÏñÖÐÐĵÄinsecure-registriesµÄÖµ
{
"registry-mirrors": ["https://njrds9qc.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.5.206:5000"]
}
ÐÞ¸ÄÍêºóÐèÒªÖØÆôdocker
systemctl daemon-reload
systemctl restart docker
²é¿´¾µÏñÖÐÐĵľµÏñ
http://192.168.5.206:5000/v2/_catalog
»òÕßÓÃcurlÃüÁî
curl -I -X DELETE http://192.168.5.206:
5000/v2/_catalog/dmp/task-web-server
Ïò¾µÏñÖÐÐÄÍÆË;µÏñ
docker push 192.168.5.206: 5000/dmp/task-web-server:2.20.1
¾µÏñÖÐÐÄɾ³ý¾µÏñ

Dockerfile
DockerfileÃüÁîÏê½â
Dockerfile Îļþ³£ÓÃÃüÁî˵Ã÷
FROM
Ö¸¶¨base¾µÏñ
MAINTAINER
ÉèÖþµÏñµÄ×÷Õߣ¬¿ÉÒÔÊÇÈÎÒâ×Ö·û´®
COPY
½«Îļþ´Óbuild context¸´ÖƵ½¾µÏñ
COPYÖ§³ÖÁ½ÖÖÐÎʽ£º
COPY src dest
COPY ["src","dest"]
×¢Ò⣺srcÖ»ÄÜÖ¸¶¨build contextÖеÄÎļþ»òĿ¼
ADD
ÓëCOPYÀàËÆ£¬´Óbuild context¸´ÖÆÎļþµ½¾µÏñ¡£²»Í¬µÄÊÇÈç¹ûsrcÊǹ鵵Îļþ(tar£¬zip£¬tgz£¬xzµÈ)£¬Îļþ»á±»×Ô¶¯½âѹµ½dest¡£
ENV
ÉèÖû·¾³±äÁ¿£¬»·¾³±äÁ¿¿É±»ºóÃæµÄÖ¸ÁîʹÓá£ÀýÈ磺
¡
ENV MY_VERSION 1.3
RUN apt-get install -y mypackage=$MY_VERSION
¡
EXPOSE
Ö¸¶¨ÈÝÆ÷ÖеĽø³Ì»á¼àÌýij¸ö¶Ë¿Ú£¬Docker¿ÉÒÔ½«¸Ã¶Ë¿Ú±©Â¶³öÀ´¡£ÎÒÃÇ»áÕ¦ÈÝÆ÷ÍøÂ粿·ÖÏêϸÌÖÂÛ¡£
VOLUME
½«Îļþ»òĿ¼ÉúÃüΪvolume¡£
WORKDIR
ΪºóÃæµÄRUN£¬CMD£¬ENTRYPOINT£¬ADD»òCOPYÖ¸¶¨ÉèÖþµÏñÖеĵ±Ç°¹¤×÷Ŀ¼
RUN
ÔÚÈÝÆ÷ÖÐÔËÐÐÖ¸¶¨µÄÃüÁî
CMD
ÈÝÆ÷Æô¶¯Ê±ÔËÐÐÖ¸¶¨µÄÃüÁî¡£
DockerfileÖпÉÒÔÓжà¸öCMDÖ¸Áµ«Ö»ÓÐ×îºóÒ»¸öÉúЧ¡£CMD¿ÉÒÔ±»docker runÖ®ºóµÄ²ÎÊýÌæ»»¡£
ENTRYPOINT
ÉèÖÃÈÝÆ÷Æô¶¯Ê±ÔËÐеÄÃüÁî¡£
DockerfileÖпÉÒÔÓжà¸öENTRYPOINTÖ¸Áµ«Ö»ÓÐ×îºóÒ»¸öÉúЧ¡£CMD»òdocker
runÖ®ºóµÄ²ÎÊý»á±»µ±×ö²ÎÊý´«µÝ¸øENTRYPOINT

ÉÏΪһ¸ö¼òµ¥µÄDockerfile ´´½¨ÁËÒ»¸ötmpfile1Îļþ£¬²¢½«tmpfile2¸´ÖƽøµÄ¾µÏñµ±Ç°Ä¿Â¼/testdir£¬²¢½«bunch.tar.gz½âѹ¸´ÖƽøÁË/testdirĿ¼¡£
¹¹½¨¾µÏñ

¢Ù¹¹½¨Ç°È·±£build contextÖдæÔÚÐèÒªµÄÎļþ¡£
¢ÚÒÀ´ÎÖ´ÐÐDockerfileÖ¸ÁÍê³É¹¹½¨¡£
ÔËÐÐÈÝÆ÷£¬ÑéÖ¤¾µÏñÄÚÈÝ£º

¢Ù½øÈëÈÝÆ÷£¬µ±Ç°Ä¿Â¼ÎªWORKDIR£¬Èç¹û²»´æÔÚ£¬Docker»á×Ô¶¯ÎªÎÒÃÇ´´½¨¡£
¢ÚWORKDIRÖб£´æÁËÎÒÃÇÏ£Íû´æÔÚµÄĿ¼
¢ÛENVÖ¸ÁÒåµÄ»·¾³±äÁ¿ÒѾÉúЧ¡£
ͨ¹ýDockerfile¹¹½¨¾µÏñ²¢Æô¶¯ÈÝÆ÷
#¹¹½¨task-web-server
docker build -t 192.168.5.206:5000/dmp/task-web-server:2.20.2
.
#ÈÝÆ÷Æô¶¯ÃüÁî
docker run -it -p 8077:8022 192.168.5.206:5000/dmp/task-web-server:2.20.2
docker×Ô¶¨ÒåÍøÂçÅäÖÃ
docker network create --driver bridge my_net
brctl show
docker network inspect my_net
´´½¨ÍøÇÅʱ¼ÓÈë Íø¶Îsubnet Íø¹Øgateway
docker network create --driver bridge --subnet 172.22.16.0/24
--gateway 172.22.16.1 my_net
ÈÝÆ÷Æô¶¯Ê±£¬Í¨¹ý--networkÖ¸¶¨ÍøÇÅ
docker run -it --network=my_net task-web-server:1.0.0
¿ÉÒÔÊÖ¶¯Ö¸¶¨Íø¶Î·ÖÅäip
docker run -it --network=my_net --ip 172.22.16.8 task-web-server:1.0.0

ÏîÄ¿Docker¼Ü¹¹²ÂÏë

DockerµÄCI²ÂÏë

ÒýÈëDocker-ComposeÈÝÆ÷¹ÜÀí¹¤¾ß
ComposeÊÇÒ»¸öÓÃÓÚ¶¨ÒåºÍÔËÐжàÈÝÆ÷DockerÓ¦ÓóÌÐòµÄ¹¤¾ß¡£Ê¹ÓÃCompose£¬Äú¿ÉÒÔʹÓÃYAMLÎļþÀ´ÅäÖÃÓ¦ÓóÌÐòµÄ·þÎñ¡£È»ºó£¬Ê¹Óõ¥¸öÃüÁÄú¿ÉÒÔ´ÓÅäÖÃÖд´½¨²¢Æô¶¯ËùÓзþÎñ¡£
ʹÓÃdocker Compose»ù±¾ÉÏÊÇÈý²½Ö裺
¶¨ÒåÓ¦ÓóÌÐòµÄDockerfileÎļþ
¶¨Òå¹¹³ÉÓ¦ÓóÌÐòµÄ·þÎñ£¬docker-compose.ymlÒÔ±ãÓÚ¿ÉÒÔÔÚ¸ôÀë»·¾³ÖÐÒ»ÆðÔËÐÐ
run docker-compose upºÍcomposeÆô¶¯²¢ÔËÐÐÕû¸öÓ¦ÓóÌÐò¡£
Compose¾ßÓйÜÀíÓ¦ÓóÌÐòÕû¸öÉúÃüÖÜÆÚµÄÃüÁ
Æô¶¯¡¢Í£Ö¹ºÍÖØ½¨·þÎñ
²é¿´ÕýÔÚÔËÐеķþÎñµÄ״̬
Á÷ʽ´«ÊäÔËÐзþÎñµÄÈÕÖ¾Êä³ö
ÔÚ·þÎñÉÏÔËÐÐÒ»´ÎÐÐÃüÁî
ÔÚLinuxϵͳÖÐComposeµÄ²¿Êð
°²×°Compose
ÔËÐÐÏÂÃüÁîÒÔÏÂÔØDocker ComposeµÄµ±Ç°Îȶ¨°æ±¾£º
ÎÒ¶Ô¹ÙÍø·½·¨ºÇºÇÁË£¬curlÁ¬½ÓÓÐÎÊÌâ¡£ÕâÀïÌṩÎÞ¿Ó·½·¨
¹ÙÍøÕÒµ½×îÐÂÎȶ¨°æ±¾£ºhttps://github.com/docker/compose/releases/
£¬ ÏÂÔØ¶ÔÓ¦¶þ½øÖÆÎļþ£¬ftpµ½·þÎñÆ÷µÄ/usr/local/bin/Ŀ¼Ï£¬²¢½«ÎļþÃû¸ÄΪdocker-compose¡£
¶Ô¶þ½øÖÆÎļþÓ¦Óø³ÓèrootȨÏÞ£º
sudo chmod +x /usr/local/bin/docker-compose
Ð¶ÔØ
Ð¶ÔØdocker Compose£º
sudo rm /usr/local/bin/docker-compose
YAML ÅäÖÃÃüÁî

Docker Compose ³£ÓÃÃüÁî

Docker-Compose¹¤×÷ÔÀí

docker-compose.ymlʾÀý
#ͨ¹ý¹¹½¨µ±Ç°Ä¿Â¼µÄDockerFileÎļþ½øÐоµÏñµÄ¹¹½¨£¬²¢Æô¶¯ÈÝÆ÷¡£
version: "3.7"
services: dmp-web-server: build: . ports: - "8077:8022" - "8078:8023" |
Jenkins+Docker

|