±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁËDockerÈÝÆ÷ÉúÃüÖÜÆÚ°²È«ÎÊÌâ¼°DockerÈÝÆ÷°²È«ÏÖ×´¸ÄÉÆ·½·¨¡£
±¾ÎÄÀ´×ÔÓÚ΢ÐŹ«Õ˺Ű²È«Å££¬ÓÉ»ðÁú¹ûÈí¼þLinda±à¼¡¢ÍƼö¡£ |
|
Ò»¡¢Ç°ÑÔ
ºÁÎÞÒÉÎÊ£¬ÈÝÆ÷Êǵ±Ç°ÔƼÆËãµÄÈÈÃÅÖ÷Á÷¼¼ÊõÖ®Ò»¡£

Docker ͨ¹ý°ÑÓ¦ÓõÄÔËÐÐʱ»·¾³ºÍÓ¦Óôò°üÔÚÒ»Æð£¬½â¾öÁ˲¿Êð»·¾³ÒÀÀµµÈÎÊÌ⣻ËüÏû³ýÁ˱àÒë¡¢´ò°üÓ벿Êð¡¢ÔËά֮¼äµÄºè¹µ£¬ÓÐÖúÓÚÌá¸ßÓ¦Óÿª·¢¡¢ÔËάЧÂÊ£º×ÜÖ®£¬ËüÓë
DevOps ÀíÄı¶øºÏ£¬Êܵ½Á˺ܶàÆóÒµµÄÍÆ³ç¡£
µ±È» Docker ÈÝÆ÷µÄÉúÃüÖÜÆÚÖÐÒ²´æÔÚ×Ų»ÉÙ°²È«Òþ»¼£¬±ÈÈçÈÝÆ÷×ÔÉíµÄÎÊÌâ¡¢ÈÝÆ÷¾µÏñµÄÎÊÌ⣬»¹ÓÐÈÝÆ÷ÔÚÔËÐÐʱ±©Â¶µÄÎÊÌâµÈµÈ¡£Òò´Ë£¬±¾ÎĽ«¶Ô
Docker ÈÝÆ÷ÉúÃüÖÜÆÚµÄ°²È«ÎÊÌâ¼°ÏàÓ¦µÄ¸ÄÉÆ·½·¨½øÐÐÈô¸É̽ÌÖ£¬¹Òһ©Íò£¬Å×שÒýÓñ£¬Ï£Íû¸÷λ¶ÁÕßÓèÒÔÅúÆÀÖ¸Õý£¡
¶þ¡¢DockerÈÝÆ÷ÉúÃüÖÜÆÚ°²È«ÎÊÌâ
ÔÚ Docker ÈÝÆ÷ÉúÃüÖÜÆÚÄڵĶà¸ö½×¶Î¾ù¿ÉÄÜÒýÈ밲ȫÎÊÌ⣬±¾Õ½«·ÖÄ£¿é¶ÔÕâЩ°²È«ÎÊÌâ½øÐÐdzÎö£¬¸Ù¾ÙÄ¿ÕÅ£¬ÎÒÃÇÏÈÁ˽âÒ»ÏÂ
Docker ÈÝÆ÷È«ÉúÃüÖÜÆÚ°²È«¹Ü¿ØµÄ¼Ü¹¹£¬Èçͼ1Ëùʾ¡£

ͼ1. Docker ÈÝÆ÷È«ÉúÃüÖÜÆÚ°²È«¹Ü¿Ø¼Ü¹¹
ÕâÕÅͼƬ¿ÉÒÔ·´Ó³ Docker ¶ÔÆäºËÐÄ¡ª¡ª¡°¾µÏñ¡± µÄ ¡°Build, Ship and Run¡±£¨¹¹½¨¾µÏñ¡¢´«Êä¾µÏñÓëÔËÐÐÈÝÆ÷£©²Ù×÷£»DockerµÄÓ¦Óû·¾³¿É±»·ÖΪ¡°·ÇÉú²ú»·¾³¡±ºÍ
¡°Éú²ú»·¾³¡± ÕâÁ½Àà¡£
·ÇÉú²ú»·¾³Óë Dev£¨¿ª·¢£©Ç¿Ïà¹Ø£¬¶øÉú²ú»·¾³ÔòÓëOps£¨ÔËά£©Ç¿Ïà¹Ø¡£·ÇÉú²ú»·¾³ÄÚµÄÖ÷Òª¹Ü¿ØµãÊǾµÏñÉî¶ÈɨÃ裬ÔÚÉú²ú»·¾³×öÈÝÆ÷±àÅÅʱÐèÒª´Ó·ÇÉú²ú»·¾³ÀÈ¡²¢ÔËÐÐDocker¾µÏñ£¬Òò´Ë¾µÏñÔËÐпØÖÆÒ²ÊÇÒ»¸öÖ÷Òª¹Ü¿Øµã¡£
Éú²ú»·¾³ÄÚµÄÖ÷Òª¹Ü¿ØµãÊÇÈÝÆ÷ϵͳÈëÇÖ¼ì²âÓë·À»¤ÒÔ¼°ÈÝÆ÷ÍøÂçÈëÇÖ¼ì²âÓë·À»¤¡£Í¬Ê±£¬Ó¦ÔÚDockerÈÝÆ÷È«ÉúÃüÖÜÆÚÖеĸ÷¸ö½×¶Î½«ºÏ¹æ»ùÏßÎÊÌâ×÷ÎªÖØÒªµÄ¹Ü¿Øµã¡£
ÏÂÃæ´ÓDockerÈÝÆ÷°²È«µÄ¸÷¸öÖ÷Òª¹Ü¿Øµã³ö·¢£¬Áоٲ¿·ÖËüÃÇËùÓ¦¶ÔµÄ°²È«ÎÊÌâ¡£
1¡¢¾µÏñÉî¶ÈɨÃè
ÔÚ×ö¾µÏñÉî¶ÈɨÃèʱ£¬Ó¦ÖØÊӵݲȫÎÊÌâ°üÀ¨µ«²»ÏÞÓÚ£º
¾µÏñÖеIJÙ×÷ϵͳÈí¼þ°üÓëÓ¦ÓóÌÐòÒÀÀµÏî°üº¬ÒÑÖªCVE©¶´
¾µÏñµÄÓ¦ÓÃĿ¼±»Ö²ÈëWebshell
¾µÏñÃô¸ÐÐÅϢй¶
¾µÏñÍêÕûÐÔУÑéÎÊÌâ
DockerfileÖдæÔÚ²»°²È«µÄд·¨£¨DockerfileÊÇDocker¾µÏñµÄ¹¹½¨½Å±¾£©
2¡¢¾µÏñÔËÐпØÖÆ
ÔÚ×ö¾µÏñÔËÐпØÖÆÊ±£¬Ó¦ÖØÊӵݲȫÎÊÌâ°üÀ¨µ«²»ÏÞÓÚ£º
¾µÏñÍêÕûÐÔУÑéÎÊÌâ
ÌØÈ¨Ä£Ê½¹²ÏírootȨÏÞ
ÄÚ´æÅä¶îδ±»ÏÞÖÆ
CPUÓÅÏȼ¶Î´±»ÏÞÖÆ
´æ´¢¿Õ¼äÅä¶îδ±»ÏÞÖÆ
ÔÚÆôÓÃÈÝÆ÷ʱʹÓÃHostÍøÂçģʽ
3¡¢ÈÝÆ÷ϵͳÈëÇÖ¼ì²âÓë·À»¤
ÔÚ×öÈÝÆ÷ϵͳÈëÇÖ¼ì²âÓë·À»¤Ê±£¬Ó¦ÖØÊӵݲȫÎÊÌâ°üÀ¨µ«²»ÏÞÓÚ£º
δ¸ôÀëÎļþϵͳ
µ÷ÓÃÓЩ¶´µÄϵͳÄں˺¯Êý
¾Ü¾ø·þÎñ¹¥»÷
4¡¢ÈÝÆ÷ÍøÂçÈëÇÖ¼ì²âÓë·À»¤
ÔÚ×öÈÝÆ÷ÍøÂçÈëÇÖ¼ì²âÓë·À»¤Ê±£¬Ó¦ÖØÊӵݲȫÎÊÌâ°üÀ¨µ«²»ÏÞÓÚ£º
ÈÝÆ÷¼äµÄ¾ÖÓòÍø¹¥»÷
Remote API½Ó¿Ú°²È«
DockerȱÏݼܹ¹Ó밲ȫ»úÖÆç¢Â©
΢·þÎñ¼Ü¹¹WebÓ¦Óð²È«ÎÊÌâ
5¡¢°²È«ºÏ¹æ»ùÏß
ΪÁËÓ¦¶ÔDocker°²È«ÎÊÌâ£¬Ó¦ÖØÊӵݲȫÎÊÌâ°üÀ¨µ«²»ÏÞÓÚ£º
Äں˼¶±ð
ÍøÂç¼¶±ð
¾µÏñ¼¶±ð
ÈÝÆ÷¼¶±ð
ÎļþÏÞÖÆ
ÄÜÁ¦ÏÞÖÆ
6¡¢Docker¼°ÆäÅäÌ×Èí¼þ©¶´
ÔÚʹÓÃDocker¼°ÆäÅäÌ×Èí¼þʱ£¬Ó¦ÖØÊӵݲȫÎÊÌâ°üÀ¨µ«²»ÏÞÓÚ£º
Docker×ÔÉí©¶´
K8S(Kubernetes)µÈ±àÅÅÓ¦ÓÃ×ÔÉí©¶´
¾µÏñ²Ö¿â×ÔÉí©¶´
×¢£ºDocker¼°ÆäÅäÌ×Èí¼þ©¶´¶ÔDockerÈÝÆ÷°²È«ÎÊÌâÓÐ׎ÏÉîµÄÓ°Ï죬Òò¶ø½«Ö®¶ÀÁ¢³ÉÒ»¸ö¹Ü¿Øµãµã¡£¿É½«¡°ËùʹÓõÄDocker¼°ÆäÅäÌ×Èí¼þµÄ°æ±¾²»ÊÜÒÑ֪©¶´Ó°Ï족×÷ΪһÌõ¡°°²È«ºÏ¹æ»ùÏß¡±¡£
Èý¡¢Ç³Ì¸DockerÈÝÆ÷°²È«ÏÖ×´¸ÄÉÆ·½·¨
Ãæ¶Ô Docker ÈÝÆ÷°²È«µÄÌôÕ½£¬¿ÉÒÔ ¡°·Ö¶øÖÎÖ®¡±£¬¶Ô¸÷¸ö½×¶ÎµÄ°²È«¹Ü¿Øµã½øÐйܿء£ÔÚʵʩ¹Ü¿ØÊ±£¬Ò²¿É»®·ÖÓÅÏȼ¶£¬ÓÅÏÈ¿¼ÂǽÏÎªÖØÒªµÄ¹Ü¿Øµã£¬ÍƳٿ¼ÂǽÏΪ´ÎÒªµÄ¹Ü¿Øµã£¨ÀýÈ磬¡°¾µÏñÔËÐпØÖÆ¡±
¹Ü¿ØµãÓëÓû§¶Ô Docker µÄʹÓ÷½Ê½Óнϴó¹ØÁª¡£¿ÉÒÔÔÚ°²È«²úÆ·ÖжÔÓû§µÄΣÏÕ²Ù×÷½øÐи澯£¬µ«²»Ò»¶¨Òª½øÐÐ×è¶Ï¡£Docker
ÈÝÆ÷°²È«²úÆ·Ó¦×¢ÖØ¶ÔÓÉÓû§µÄ²»°²È«Ê¹Ó÷½Ê½´ßÉúµÄ°²È«ÎÊÌâ½øÐзÀÓù£©¡£
ÏÂÃæ£¬½áºÏÐÐҵʵ¼ù¾ÑéÊáÀíÕë¶Ô ¡°¾µÏñÉî¶ÈɨÃ衱¡¢¡°ÈÝÆ÷ϵͳÈëÇÖ¼ì²âÓë·À»¤¡±¡¢¡°ÈÝÆ÷ÍøÂçÈëÇÖ¼ì²âÓë·À»¤¡±
Óë ¡°°²È«ºÏ¹æ»ùÏß¡± µÄ¹Ü¿Ø·½·¨¡£
01¡°¾µÏñÉî¶ÈɨÃ衱 ¹Ü¿Ø·½·¨
ÔÚʹÓà Docker ¾µÏñ֮ǰʹÓà Docker ¾µÏñɨÃèÆ÷ÓÐÖúÓÚ·¢ÏÖ Docker ¾µÏñµÄ°²È«ÐÔÎÊÌâ¡£»ùÓÚ´Ë£¬ÖªÃûµÄ¿ªÔ´¾µÏñ²Ö¿â
Harbor ¾Í¼¯³ÉÁ˾µÏñɨÃèÆ÷£¬Èçͼ 2 Ëùʾ¡£

ͼ2. ÖªÃû¿ªÔ´¾µÏñ²Ö¿âHarbor¼¯³ÉÁ˾µÏñɨÃèÆ÷
ÏÖÓоµÏñɨÃ蹤¾ß»ù±¾¶¼¾ß±¸ÁË ¡°¶ÔÈí¼þ©¶´½øÐÐɨÃ衱 µÄ»ù´¡¹¦ÄÜ¡£²¿·Ö¿ªÔ´ÏîÄ¿»òÉÌҵƽ̨¾ß±¸ÈçÏÂÌØÊ⹦ÄÜ£º
¶ÔľÂí¡¢²¡¶¾¡¢¶ñÒâÈí¼þ»òÆäËû¶ñÒâÍþв½øÐо²Ì¬·ÖÎö
¶ÔÖ÷Á÷±à³ÌÓïÑԵĴúÂ밲ȫÎÊÌâ½øÐо²Ì¬·¢ÏÖ£¨Ó뿪·¢¹¤×÷Á÷½ôÃܽáºÏ£©
¶ÔDockerfile½øÐмì²é
¶Ôƾ¾Ýй¶½øÐмì²é
ÒòΪ Docker ¾µÏñÊÇ Docker ÈÝÆ÷µÄÄ£°å£¬ËùÉæ¼°µÄ¹¥»÷Ãæ½Ï´ó£¬²¢ÇÒÓеݲȫ·çÏÕ²»Ò×±»É¨ÃèÆ÷Ëù·¢ÏÖ£¬ËùÒÔÏֽ׶εÄ
¡°Docker¾µÏñɨÃ衱µÄ×ö·¨ÈÔ²»Äܱ£ÕÏ Docker ¾µÏñµÄ°²È«ÐÔ£¬½¨ÒéÈ˹¤½éÈë¼ì²é£¨¿É½áºÏ¡°docker
inspect¡± Óë ¡°docker history¡± µÈÃüÁî²é¿´¾µÏñµÄ²¿·ÖÐÅÏ¢£©¡£
02¡°ÈÝÆ÷ϵͳÈëÇÖ¼ì²âÓë·À»¤¡± ¹Ü¿Ø·½·¨
¼ÓÇ¿ Docker ÈÝÆ÷ÓëÄں˲ãÃæµÄ¸ôÀëÐÔÓÐÖúÓÚÇ¿»¯ ¡°ÈÝÆ÷ϵͳÈëÇÖ¼ì²âÓë·À»¤¡±¡£±ÈÈç Docker
ÉçÇø¿ª·¢µÄ°²È«ÌØÐÔ¡¢Linux ÔËÐÐʱ·½°¸¡¢Òì³£ÐÐΪ¼ì²âÓ¦ÓÃÒÔ¼° ¡°ÈÝÆ÷+È«ÐéÄ⻯¡± ·½°¸£¬Èçͼ 3
Ëùʾ¡£

ͼ3. ¡°ÈÝÆ÷ϵͳÈëÇÖ¼ì²âÓë·À»¤¡± ¹Ü¿Ø·½·¨
Docker ÉçÇø¿ª·¢ÁËÕë¶Ô Linux µÄ Cgroup ºÍ Namespce µÄ°²È«ÌØÐÔ£¨Cgroup¿ÉÓÃÓÚÏÞÖÆCPU¡¢ÄÚ´æ¡¢¿éÉ豸I/O£¨¾ßÌå¿É²Î¿¼¡°docker
run¡±ÃüÁîµÄ²ÎÊý£©£»Namespace ¿ÉÓÃÓÚ¶Ô PID¡¢mount¡¢network¡¢UTS¡¢IPC¡¢user
µÈÄÚºË×ÊÔ´½øÐиôÀ룻Cgroup ¶Ôϵͳ×ÊÔ´µÄ¸ôÀëÒѾ±È½ÏÍêÉÆÁË£¬¶ø Namespace µÄ¸ôÀ뻹²»¹»ÍêÉÆ£¨ÉõÖÁ²»¿ÉÄÜÍêÉÆ£¬ÒòΪÕâÊǹ²ÏíÄں˵¼ÖµĹÌÓÐȱÏÝ£©¡£
²¿·Ö¿É½è¼øµÄLinuxÔËÐÐʱ·½°¸ÈçÏ£º
(1) Capability£ºÁîij³ÌÐòÓµÓÐÄÄЩÄÜÁ¦£»
(2) Selinux£º¶¨ÒåÁËϵͳÖÐÿһ¸öÓû§¡¢½ø³Ì¡¢Ó¦Óá¢Îļþ·ÃÎʼ°×ª±äµÄȨÏÞ£¬È»ºóʹÓÃÒ»¸ö°²È«²ßÂÔÀ´¿ØÖÆÕâЩʵÌ壨¼´Óû§¡¢½ø³Ì¡¢Ó¦ÓúÍÎļþ£©Ö®¼äµÄ½»»¥£¬°²È«²ßÂÔÖ¸¶¨ÁËÈçºÎÑϸñ»òÕß¿íËɵؽøÐмì²é£»
(3) Apparmor£ºÉèÖÃÖ´ÐгÌÐòµÄ·ÃÎÊ¿ØÖÆÈ¨ÏÞ£¨¿ÉÏÞÖÆ³ÌÐò¶Á/дij¸öĿ¼Îļþ£¬´ò¿ª/¶Á/Ð´ÍøÂç¶Ë¿ÚµÈ£©;
(4) Secomp£ºÓ¦ÓóÌÐòµÄɳºÐ»úÖÆ£¬ÒÔ°×Ãûµ¥¡¢ºÚÃûµ¥·½Ê½ÏÞ¶¨½ø³Ì¶Ôϵͳ½øÐе÷Óã»
(5) Grsecurity£ºlinux Äں˲¹¶¡£¬ÔöÇ¿Äں˰²È«ÐÔ¡£
²¿·Ö¿É½è¼øµÄÈÝÆ÷»·¾³Òì³£ÐÐΪ¼ì²â¿ªÔ´Ó¦ÓÃÈçÏ£º
(1) Sysdig Falco£ºÒ»¿îÎªÔÆÔÉúƽ̨Éè¼ÆµÄ½ø³ÌÒì³£ÐÐΪ¼ì²â¹¤¾ß£¬Ö§³Ö½ÓÈëϵͳµ÷ÓÃʼþºÍ
Kubernetes Éó¼ÆÈÕÖ¾£»
(2) cAdvisor£º¿ÉÒÔ¶Ô½Úµã»úÆ÷ÉϵÄ×ÊÔ´¼°ÈÝÆ÷½øÐÐʵʱ¼à¿ØºÍÐÔÄÜÊý¾Ý²É¼¯£¬°üÀ¨ CPU ʹÓÃÇé¿ö¡¢ÄÚ´æÊ¹ÓÃÇé¿ö¡¢ÍøÂçÍÌÍÂÁ¿¼°ÎļþϵͳʹÓÃÇé¿ö¡£
¡°ÈÝÆ÷+È«ÐéÄ⻯¡± ·½°¸Ò²ÊÇ ¡°ÈÝÆ÷ϵͳÈëÇÖ·À»¤¡± µÄÓÐЧ·½°¸£¬Èç¹û½«ÈÝÆ÷ÔËÐÐÔÚÈ«ÐéÄ⻯»·¾³ÖУ¨ÀýÈçÔÚÐéÄâ»úÖÐÔËÐÐÈÝÆ÷£©£¬ÕâÑù¾ÍËãÈÝÆ÷±»¹¥ÆÆ£¬Ò²»¹ÓÐÐéÄâ»úµÄ±£»¤×÷Óã¨Ä¿Ç°Ò»Ð©°²È«ÐèÇóºÜ¸ßµÄÓ¦Óó¡¾°²ÉÓõľÍÊÇÕâÖÖ·½Ê½£©¡£
03¡°ÈÝÆ÷ÍøÂçÈëÇÖ¼ì²âÓë·À»¤¡± ¹Ü¿Ø·½·¨
Docker ÈÝÆ÷ÍøÂçµÄ°²È«ÎÊÌâ¿É±»»®·ÖΪ ¡°ÍøÂ簲ȫ·À»¤¡± Óë ¡°Î¢·þÎñWebÓ¦Óð²È«¡± Á½À࣬¡°¸ôÀ롱
ºÍ ¡°·ÃÎÊ¿ØÖÆ¡± µÈÖ÷Ҫ˼·¾ùÓÐÖúÓڹܿضþÕߵݲȫÎÊÌâ¡£´ËÍ⣬ÈԿɽ«²¿·ÖÏֽ׶νÏΪ³ÉÊìµÄ°²È«¼¼ÊõÓ¦Óõ½
Docker ³¡¾°ÖС£ÔÚ¾ßÌåʵʩʱ£¬¿ÉÒÀ¾Ý Docker Ó¦ÓùæÄ£Óëʵ¼ÊµÄÍøÂ粿ÊðÇé¿ö½øÐйܿء£
Docker ÍøÂç±¾Éí¾ß±¸ ¡°¸ôÀ롱 ºÍ ¡°·ÃÎÊ¿ØÖÆ¡± ¹¦ÄܵÄÍøÂ簲ȫ»úÖÆ£¬µ«´æÔÚ ¡°Á£¶È½Ï´ó¡±
Óë ¡°¶Ô°²È«ÍþвµÄ¸ÐÖªÄÜÁ¦²»×㡱 µÈȱÏÝ£¬Èçͼ4Ëùʾ¡£

ͼ4. Docker ÍøÂç×ÔÉí°²È«»úÖÆ
ΪÁËÃÖ²¹ Docker ÍøÂçµÄ°²È«È±ÏÝ£¬Ò»Ð©ÉÌÒµ»¯µÄ¶Ë¶Ô¶ËµÄ Docker °²È«²úÆ·¶ÔÍøÂ缯Ⱥ½øÐÐÁË×ÝÉî·ÀÓù£¬ËüÃǾ߱¸µÄ¹¦ÄÜÌØµã°üÀ¨ÁË£º
ÈÝÆ÷·À»ðǽ
ÔËÐÐʱ±£»¤
ÍøÂçÉî¶ÈÊý¾Ý°ü¼ì²â
¹¥»÷ÐÐΪ¡¢Òì³£ÐÐΪ¸æ¾¯
ÈÕÖ¾¼à¿Ø
¶à±àÅÅÆ½Ì¨Ö§³Ö
ÍøÂçÁ÷Á¿¿ÉÊÓ»¯
²¿·Ö³§ÉÌÔÚʵÏÖÉÏÊö¹¦Äܵãʱ£¬ÔÚ²úÆ·ÖÐÒýÈëÁË»úÆ÷ѧϰ·½·¨£¬ÓÃÓÚÉú³ÉÐÐΪģʽÓëÈÝÆ÷¸ÐÖªÍøÂç¹æÔò¡£
Docker ÍøÂç¾ßÓÐ×éÍø·½°¸¶àÑù»¯¡¢ÈÝÆ÷ÉúÃüÖÜÆÚ³¤¶Ì²»Ò»¡¢Ó¦Óó¡¾°¶àÑù»¯µÈÌØµã¡£Òò¶ø£¬Ó¦²ÎÕÕ×éÍø·½°¸ÌصãÖÆ¶¨¹Ü¿Ø·½·¨¡£±ÊÕßÊáÀíµÄÕë¶Ô
¡°Àഫͳµ¥ÌåÓ¦Óá±ºÍ ¡°Î¢·þÎñ¼Ü¹¹Ó¦Óá± µÄÈëÇÖ¼ì²âÓë·ÀÓù˼·Èçͼ5Ëùʾ¡£

ͼ5. Docker ÍøÂçÈëÇÖ¼ì²âÓë·À»¤Ë¼Â·
Ê×ÏÈÀ´¿´ ¡°Àഫͳµ¥ÌåÓ¦Óá± µÄ Docker ÍøÂ缯ȺµÄÈëÇÖ¼ì²âºÍ·À»¤Ë¼Â·¡£ÒÔͼ 6 ËùʾµÄ΢·þÎñ¼¯ÈºÎªÀý½øÐнéÉÜ¡£¸Ã¼¯ÈºÀïÖ»ÓÐ
Nginx¡¢Tomcat ÒÔ¼° MySQL µÄ 3 ¸öÈÝÆ÷¡£

ͼ6. ¡°Àഫͳµ¥ÌåÓ¦Óá±µÄDockerÍøÂ缯ȺµÄÈëÇÖ¼ì²âºÍ·À»¤Ë¼Â·
×¢£ºÍ¼ÖеÄÂÌÉ«ÐéÏß±íʾÎļþ¹ÒÔØ»òÕßDockerµÄcpÃüÁîµÈ·½Ê½£¬Í¨¹ýÕâÁ½ÖÖ·½Ê½¿ÉÒÔ¸ü±ã½ÝµØÔÚËÞÖ÷»úʵʱÐÞ¸ÄNginxÈÝÆ÷ÀïµÄÅäÖÃÎļþ£¬µ÷ÕûTomcatÈÝÆ÷ÀïµÄÓ¦ÓóÌÐòÎļþ£¬»òÕß¶ÔMySQLÈÝÆ÷ÀïµÄÊý¾Ý½øÐг־û¯¡£
ΪÁ˶ÔÕâÌ× Docker Web Ó¦ÓýøÐÐÈëÇÖ¼ì²âÓë·ÀÓù£¬¿É¿¼ÂÇÒÔÏ 9 µã·½·¨£º
(1) Iptables¸ôÀë
ͨ¹ýÔÚËÞÖ÷»ú²à¶ÔDockerÍøÂ缯ȺÍⲿ×ö»ùÓÚIptablesµÄ¸ôÀë²ßÂÔ£¬¿ÉÒÔÏÞÖÆ¹¥»÷Õß¶Ô¡°ÈÝÆ÷ÔÚËÞÖ÷»úËùÓ³Éä¶Ë¿Ú¡±µÄ·ÃÎÊ£¬ËõСÊܹ¥»÷Ãæ¡£
(2) ²¿ÊðÈíWAF
ͨ¹ýÔÚDockerÍøÂ缯ȺµÄÁ÷Á¿Èë¿Ú´¦×öÈíWAFµÄ²¿Êð£¨ÐÎ̬¿ÉÒÔÊÇËÞÖ÷»úÈí¼þ»òÕßDockerÈÝÆ÷£©£¬¿ÉÒÔÔÚ´Ë´¦×è¶Ï¡¢·¢ÏÖ²¿·Ö¶ñÒâÁ÷Á¿¡£
(3) ²¿ÊðRASP
ͨ¹ýÔÚJava¡¢PHP·þÎñÆ÷DockerÈÝÆ÷ÄÚ²¿²¿ÊðRASP²úÆ·£¬¿ÉÒÔÓÃÖ®×÷Ϊ±£»¤µÄ×îºóÒ»»·£¬×÷ÎªÍøÂçÖÎÀíµÄÒ»¸ö²¹³äСµã¡£
(4) WebshellɨÃè
ͨ¹ýÔÚËÞÖ÷»ú²àͨ¹ýWebshellɨÃèÒýÇæÉ¨ÃèÀ´×ÔDockerÈÝÆ÷µÄ¡°WebÓ¦ÓóÌÐòÎļþ¡±£¨ÕâЩÎļþ¿Éͨ¹ý¡°docker
cp¡±ÃüÁî»òÕß¡°¶¯Ì¬¹ÒÔØ¡±»úÖÆ»ñµÃ£©£¬ÓÐÖúÓÚ·¢ÏÖ¹¥»÷ÕßÖ²ÈëµÄWebshell¡£
(5) ÈÕÖ¾·ÖÎö
ͨ¹ýÔÚËÞÖ÷»ú²àͨ¹ýELKµÈÈÕÖ¾·ÖÎö·ÖÎöÀ´×ÔDockerÈÝÆ÷µÄÈÕÖ¾Îļþ£¨ÕâЩÈÕÖ¾ÎļþͬÑù¿Éͨ¹ý¡°docker
cp¡±»ò¡°¶¯Ì¬¹ÒÔØ¡±µÈ·½Ê½»ñµÃ£©¡£´ËÍ⣬µ¥¶ÀÔËÐÐSidekickÈÕÖ¾ÈÝÆ÷µÈ×ö·¨ÓÐÖúÓÚ·¢ÏÖ°²È«Íþв¡£
(6) ʶ±ðÖмäÈ˹¥»÷
ͨ¹ýÔÚDockerÍøÂ缯ȺÄÚ²¿Í¨¹ýÍøÂç¸ôÀëÊÇ·ÀÖ¹´ËÀà»ùÓÚÍøÂçµÄ¹¥»÷µÄÓÐЧ·½·¨£¬´Ë·½·¨¿ÉʹµÃ¹¥»÷ÕßÎÞ·¨²Ù×Ý»òÇÔÌýÖ÷»ú¼°ÆäËûÈÝÆ÷µÄÍøÂçÁ÷Á¿£»ÔÚÕâÖÖÇé¿öÏ£¬OpenVPN(¿ª·ÅÐéÄâרÓÃÍøÂç)ÌṩÁËÒ»ÖÖͨ¹ýTLS(´«Êä²ã°²È«ÐÒé)¼ÓÃÜʵÏÖÐéÄâרÓÃÍøÂç(VPN)µÄ·½·¨¡£
(7) ʶ±ð¡¢×è¶ÏÁ÷ÏòÒì³£µÄÁ÷Á¿
ͨ¹ýÔÚDockerÍøÂ缯ȺÄÚ²¿ÒÀ¾Ýʵ¼ÊµÄÍøÂçÍØÆËͼ¶ÔÍøÂç½øÐÐ ¡°Î¢·Ö¶Î¡± ¸ôÀ루ÔÚ¡°Î¢·þÎñ¼Ü¹¹¡±Ï£¬IPµØÖ·¿ÉÄܱ任Ƶ·±£¬µ«ÊÇÔ¤ÏÈ»®·ÖµÄÍø¶Î²»»á±ä»»Æµ·±£©£¬»òÕß¶ÔÖ¸¶¨µÄÍøÇÅ¡¢Íø¿¨½øÐÐÁ÷Á¿µÄDPI·ÖÎö£¬ÓÐÖúÓÚʶ±ð¡¢×è¶ÏÁ÷ÏòÒì³£µÄÁ÷Á¿¡£
(8£©Ê¶±ð¾Ü¾ø·þÎñ¹¥»÷
ͨ¹ýÔÚËÞÖ÷»ú²à¶ÁÈ¡ºÍDockerÈÝÆ÷¶ÔÓ¦µÄcgroupÎļþϵͳÏà¹ØÎļþµÄʵʱÄÚÈÝ£¨ÍøÂç¡¢CPU¡¢ÄÚ´æ¡¢´ÅÅÌ£©£¬¿ÉÒÔʶ±ð³ö¾Ü¾ø·þÎñ¹¥»÷¡£
(9) ÍøÂçÁ÷Á¿¿ÉÊÓ»¯
¡°ÍøÂçÁ÷Á¿¿ÉÊÓ»¯¡± ÊÇÏÖÓÐµÄ ¡°ÈÝÆ÷°²È«²úÆ·¡±µÄ³£¼û¸½¼Ó¹¦ÄÜ¡£¸Ã¹¦ÄܵŦÄÜ¿ÉÄÜÒÀÍÐÓÚ ¡°¶ÔÖ¸¶¨µÄÍøÇÅ¡¢Íø¿¨½øÐÐÁ÷Á¿µÄDPI·ÖÎö¡±¡£
½Ó×ÅÀ´¿´ ¡°Î¢·þÎñ¼Ü¹¹Ó¦Óá± µÄ Docker ÍøÂ缯ȺµÄÈëÇÖ¼ì²âºÍ·À»¤Ë¼Â·¡£¡°Î¢·þÎñ¼Ü¹¹Ó¦Óá±
Óë ¡°Àഫͳµ¥ÌåÓ¦Óá± µÄÏÔÖøÇø±ð°üÀ¨ÁË Docker ÈÝÆ÷ÊýÁ¿½Ï¶à¡¢ÍøÂçÍØÆË½Ï¸´Ôӵȷ½Ãæ¡£ÔÚÕâÖÖÉú²ú³¡¾°Ï£¬K8S
µÈƽ̨¿É°ïÖúÓû§½øÐдó¹æÄ£ÈÝÆ÷±àÅÅ¡£¿É¿¼ÂÇʹÓõÄÈëÇÖ¼ì²âºÍ·À»¤Ë¼Â·ÈçÏ£º
(1) ÔËÓà K8S ÔÉú»òÆäµÚÈý·½ÍøÂç²å¼þµÄÍøÂç²ßÂÔ
K8SÔÉúµÄÍøÂç²ßÂÔ ¡°NetworkPolicy¡± ¿ÉΪ K8S µÄ×î»ù±¾²Ù×÷µ¥Î» ¡°Pod¡±
Ìṩ ¡°IPµØÖ·/¶Ë¿ÚºÅ¡± ¼¶±ðµÄÍøÂç¸ôÀë¡£
×¢£ºK8SÖ§³ÖÒÔ¡°µÚÈý·½ÍøÂç²å¼þ¡±µÄÐÎʽѡÔñÍøÂç·½°¸£¬½ø¶ø»áÓ°ÏìÍøÂç²ßÂÔµÄÑ¡Ôñ¡£ÀýÈ磬
NetworkPolicyÐëÓÉʵÏÖÁËCNI½Ó¿ÚµÄÍøÂç²å¼þÌṩ£¨ÈçCalico¡¢Cilium¡¢Kube-route¡¢Weave
NetµÈµÈ£©¡£
(2) ¹Ø×¢Î¢·þÎñ¼Ü¹¹WebÓ¦ÓõĽӿڡ°ÈÏÖ¤¼øÈ¨¡±ÎÊÌâ
¿ª·¢·½Ó¦¶Ô΢·þÎñ¼Ü¹¹WebÓ¦ÓõÄÈÏÖ¤¼øÈ¨µÈÎÊÌâÓèÒÔÖØÊÓ£¬½µµÍ½Ó¿Ú±»ÍøÂç¿É»¥Í¨µÄÈÝÆ÷¶ñÒâ·ÃÎʵķçÏÕ¡£³£¼ûµÄ¡°ÈÏÖ¤¼øÈ¨¡±·½°¸¿É°üÀ¨£ºÍø¹Ø¼øÈ¨Ä£Ê½¡¢·þÎñ×ÔÖ÷¼øÈ¨Ä£Ê½¡¢API
Tokenģʽ¡£
(3) ÒÔ¡°×é¼þ»¯¡±µÄÐÎʽÔÚ΢·þÎñ¼¯ÈºÖв¿ÊðWeb°²È«Ó¦ÓÃ
ΪÁËÔö¼Ó Docker ÍøÂ缯ȺµÄ°²È«ÄÜÁ¦£¬¿ÉÔÚ Docker ¼¯ÈºÖв¿Êð Web °²È«Ó¦Óã¨Õë¶Ô
¡°À൥ÌåWebÓ¦Óá± µÄ×ö·¨ÈԿɼÌÐøÊ¹ÓᣱÈÈ磬ÎÒ˾µÄÍøÕ¾°²È«¹·¿ÉÓÃÓÚ±£»¤²¿ÊðÔÚ Docker ÈÝÆ÷ÀïµÄ
Web Ó¦Óã¬Èçͼ 7 Ëùʾ£©£¬´ËÍâÒ²¿É¿¼ÂÇÔÚÈÝÆ÷¼¯ÈºÖв¿ÊðAPIÍø¹ØÈÝÆ÷£¨»ùÓÚNginx+Lua£©¡¢ÃÛ¹ÞÈÝÆ÷»òÕß×ʲú·¢ÏÖÓë©¶´É¨ÃèÆ÷¡£

ͼ7. ÍøÕ¾°²È«¹·¿ÉÒÔÓÃÓÚ±£»¤ Docker ÈÝÆ÷
(4) ÔËÓà ¡°Service Mesh¡± ¼¼Êõ
Service Mesh£¨·þÎñÍø¸ñ£©¼¼ÊõÃÖ²¹ÁË K8S ÔÚ΢·þÎñͨÐŵĶ̰壬ÓÐÖúÓÚ¶ÔÓ¦Óòã×ö·ÃÎÊÏÞÖÆ¡£·þÎñÍø¸ñÊÇÒ»¸ö»ù´¡ÉèÊ©²ã£¬¹¦ÄÜÔÚÓÚ´¦Àí·þÎñ¼äͨÐÅ£¬ÆäÖ÷ÒªÖ°ÔðÔÚÓÚ¸ºÔðʵÏÖÇëÇóµÄ¿É¿¿´«Êä¡£ÔÚʵ¼ùÖУ¬·þÎñÍø¸ñͨ³£ÊµÏÖΪÇáÁ¿¼¶ÍøÂç´úÀí£¬Í¨³£ÓëÓ¦ÓóÌÐò²¿ÊðÔÚÒ»Æð£¬µ«ÊǶÔÓ¦ÓóÌÐò͸Ã÷¡£ÒÔ¿ªÔ´Ó¦ÓÃ
Istio ΪÀý£¬Ëüͨ¹ýΪÕû¸ö·þÎñÍø¸ñÌṩÐÐΪ¶´²ìºÍ²Ù×÷¿ØÖÆÂú×ã΢·þÎñÓ¦ÓóÌÐòµÄ¶àÑù»¯ÐèÇó¡£ËüÔÚ·þÎñÍøÂçÖÐͳһÌṩÁËÁ÷Á¿¹ÜÀí¡¢²ßÂÔÖ´ÐС¢·þÎñÉí·ÝºÍ°²È«µÈ¹Ø¼ü¹¦ÄÜ¡£Í¬Ê±£¬Istio»¹¿É¼¯³ÉÒÑÓеÄ
ACL¡¢ÈÕÖ¾¡¢¼à¿Ø¡¢Åä¶î¡¢Éó¼ÆµÈ¹¦ÄÜ¡£Î´À´ Service Mesh µÄÈںϼܹ¹Ä£ÐÍÈçͼ8Ëùʾ¡£

ͼ8. δÀ´ Service Mesh Èںϼܹ¹
04¡°°²È«ºÏ¹æ»ùÏß¡± ¹Ü¿Ø·½·¨
ΪÁËÓ¦¶Ô Docker ÈÝÆ÷ÉúÃüÖÜÆÚÀïµÄÈ«ÎÊÌ⣬ÐèÒª¿É²Ù×÷¡¢¿ÉÖ´ÐÐµÄ Docker °²È«»ùÏß¼ì²éÇåµ¥£¬Õâ¸öÇåµ¥ÒªÇåÎú¡¢¿É²é¡¢¿Éά»¤£¬ÒÔ¹©ÔÚÉú²ú»·¾³ÖÐÖ´Ðлù´¡¼Ü¹¹µÄ°²È«¼ì²éºÍÉ󼯡£
ÒÔϰ²È«ºÏ¹æ¼ì²é¹¤¾ßÓнϺõIJο¼ÐÔ£º
(1) docker-bench-security£¨ÓëDocker¹Ù·½¼°CISÍÆ³öµÄ°²È«±ê×¼ÏàÅäÌ×£¬Èçͼ9Ëùʾ£©¡£
(2) Kube-bench£¨ÔËÐÐ CIS Kubernetes »ù×¼²âÊÔ£¬À´¼ì²é Kubernetes
²¿ÊðµÄ°²È«³Ì¶È£©¡£
(3) OpenPolicyAgent£¨½«°²È«²ßÂÔºÍ×î¼Ñʵ¼ù´ÓÌØ¶¨µÄÔËÐÐʱƽ̨½âñ¡£

ͼ9. Docker-Bench-Security Óë¹Ù·½°×ƤÊéÅäÌ×
ËÄ¡¢×ܽá
¾¹ý¶àÄê·¢Õ¹£¬Docker ÈÝÆ÷¼¼ÊõÖð½¥±»½ÓÊܲ¢Ó¦ÓÃÓÚ DevOps ºÍ΢·þÎñµÈÁìÓò£¬ÔÚδÀ´»¹ÓкܴóµÄDZÁ¦¡£±¾ÎÄ̽ÌÖÁËÈô¸ÉÈÝÆ÷ÉúÃüÖÜÆÚÄڵݲȫÎÊÌ⣬²»ÄÑ·¢ÏÖ£¬Òª×öºÃ
Docker ÈÝÆ÷°²È«¹Ü¿Ø¹¤×÷£¬²»Ó¦ºöÊÓ¾µÏñÉî¶ÈɨÃè¡¢ÈÝÆ÷ϵͳÓëÈÝÆ÷ÍøÂçµÄÈëÇÖ¼ì²âÓë·À»¤ÒÔ¼°°²È«ºÏ¹æÎÊÌâµÈ»·½Ú¡£ÔÚÃæ¶ÔÉÏÊö»·½Úʱ£¬¿É¿¼ÂÇ½è¼ø¡¢¸ÄÔìÏÖÓеÄÍøÂ簲ȫ¼¼Êõ¡£
ÓÉÓÚ²»Í¬×éÖ¯»ú¹¹ÓÐ×Ų»Í¬µÄ Docker Ó¦Óü¶±ðºÍ¼¼ÊõÑ¡ÐÍ£¬Òò¶ø¾ßÌåµÄʵʩ·½·¨»áÓв»Í¬¡£²»Í¬×éÖ¯»ú¹¹Ó¦½áºÏ×ÔÉíÇé¿ö£¬·Ö½×¶Î¡¢·Ö²ã£¨ÈÝÆ÷ÒýÇæ²ã¡¢±àÅŵ÷¶È²ã£©Ñ¡ÔñÊʺϵĽâ¾ö·½°¸£¬ÒÔ¸üºÃµØ±£»¤
Docker ÈÝÆ÷»·¾³¡£
|