ÔõÑùÔÚLinuxÉÏÉèÖÃÈÝÆ÷ÍøÂç
ÔõÑùÔÚlinuxÉÏÉèÖÃÈÝÆ÷ÍøÂç
ÔÚµ±½ñÔÆÅÌËãʱ´ú£¬ÈÝÆ÷»¯ÊÖÒÕÔ½À´Ô½Êܵ½¿ª·¢ÕßµÄÇàíù¡£Docker×÷ΪÏÖÔÚ×îÊ¢ÐеÄÈÝÆ÷»¯Æ½Ì¨£¬ÎªÎÒÃÇÌṩÁËÀû±ãºÍ¸ßЧµÄÈÝÆ÷ÖÎÀí·½·¨¡£¶øÈÝÆ÷µÄÍøÂçÉèÖÃÔÚÈÝÆ÷»¯Ó¦ÓõݲÅÅÖÐÒ²ÏÔµÃÓÈΪÖ÷Òª¡£ÔÚ±¾ÎÄÖУ¬ÎÒÃǽ«ÏÈÈÝÔõÑùÔÚLinuxÉÏÉèÖÃÈÝÆ÷µÄÍøÂ磬ÒÔ±ãÓÚÈÝÆ÷Ö®¼äµÄͨѶºÍÓëÍâ½çµÄ»¥Áª¡£
Ò»¡¢ÏàʶÍøÂçģʽ
DockerÌṩÁ˶àÖÖÍøÂçģʽ¹©Ñ¡Ôñ£¬ÎÒÃÇÐèҪƾ֤ÏÖʵÐèÇóÑ¡ÔñºÏÊʵķ½·¨¡£
Bridge£¨ÇŽÓģʽ£©£ºÄ¬ÈÏģʽ£¬½¨ÉèÒ»¸öÐéÄâÍøÂ磨bridge£©£¬²¢½«Ã¿¸öÈÝÆ÷ÅþÁ¬µ½Õâ¸öÍøÂçÖС£ÈÝÆ÷¿ÉÒÔʹÓÃ×Ô¼ºµÄIPµØµãÔÚ¸ÃÍøÂçÖÐͨѶ¡£
Host£¨Ö÷»úģʽ£©£ºÈÝÆ÷ÓëËÞÖ÷»ú¹²ÏíÍøÂ磬ÈÝÆ÷Ö±½ÓʹÓÃËÞÖ÷»úµÄIPµØµãºÍÍøÂç½Ó¿Ú¡£
Overlay£¨ÁýÕÖÍøÂ磩£ºÔÚ¶àÖ÷»úDockerÇéÐÎÏÂʹÓõÄÍøÂçģʽ£¬¿ÉÒÔʵÏÖ¿çÖ÷»úµÄÈÝÆ÷ͨѶ¡£
MacVlan£¨MAC VLAN£©£ºÈÝÆ÷ÓëÎïÀíÍøÂçÖеÄÏêϸ½Ó¿ÚMACµØµãÏà¹ØÁª£¬²¢Ö±½Ó»ñµÃÒ»¸öÕæʵµÄÎïÀíÍøÂçµØµã¡£
¶þ¡¢ÉèÖÃÇŽÓģʽÍøÂç
ÇŽÓģʽÊÇDocker×î³£ÓõÄÍøÂçÉèÖ÷½·¨£¬¿ÉÒÔʵÏÖÈÝÆ÷Ö®¼äµÄͨѶ£¬Í¬Ê±ÓÖÓëÍⲿÍøÂç¸ôÀë¡£ÒÔÏÂÊÇÉèÖÃÇŽÓģʽÍøÂçµÄ°ì·¨¡£
½¨ÉèÍøÂç
$ docker network create mynetwork
µÇ¼ºó¸´ÖÆ
Æô¶¯ÈÝÆ÷
$ docker run -d --name mycontainer --network mynetwork nginx
µÇ¼ºó¸´ÖÆ µÇ¼ºó¸´ÖÆ
ÒÔÉÏÏÂÁî»áÆô¶¯Ò»¸öÃûΪmycontainerµÄÈÝÆ÷£¬²¢ÇÒ½«Æä¼ÓÈëµ½mynetworkÍøÂçÖС£
ÈÝÆ÷Ö®¼äͨѶ
ÔÚͳһ¸öÍøÂçÖеÄÈÝÆ÷¿ÉÒÔʹÓÃÈÝÆ÷Ãû³Æ¾ÙÐÐͨѶ£¬¿ÉÒÔͨ¹ýÈÝÆ÷µÄÃû³ÆÆÊÎö³É¶ÔÓ¦µÄIPµØµã¡£
$ docker exec -it mycontainer1 ping mycontainer2
µÇ¼ºó¸´ÖÆ
¿ÉÒÔʹÓôËÏÂÁîÔÚÈÝÆ÷ÖÐpingÁíÒ»¸öÈÝÆ÷¡£
Èý¡¢ÉèÖÃÖ÷»úģʽÍøÂç
Ö÷»úģʽÍøÂçʹµÃÈÝÆ÷Ö±½ÓʹÓÃÖ÷»úµÄÍøÂç½Ó¿Ú¼°IPµØµã£¬Òò´ËÈÝÆ÷ÓëÖ÷»ú¹²ÏíÒ»¸öÍøÂçÃüÃû¿Õ¼ä¡£ÒÔÏÂÊÇÉèÖÃÖ÷»úģʽÍøÂçµÄ°ì·¨¡£
Æô¶¯ÈÝÆ÷
$ docker run -d --name mycontainer --network host nginx
µÇ¼ºó¸´ÖÆ
ÒÔÉÏÏÂÁî»áÆô¶¯Ò»¸öÃûΪmycontainerµÄÈÝÆ÷£¬²¢ÇÒ½«ÆäÖ±½ÓʹÓÃÖ÷»úµÄÍøÂç¡£
ÈÝÆ÷ÓëÖ÷»úͨѶ
ÔÚÖ÷»úģʽÏ£¬ÈÝÆ÷Ö±½ÓʹÓÃÖ÷»úµÄÍøÂç½Ó¿Ú¼°IPµØµã£¬ÓëÖ÷»ú¾ÙÐÐͨѶ¡£
$ docker exec -it mycontainer ping localhost
µÇ¼ºó¸´ÖÆ
ÒÔÉÏÏÂÁî¿ÉÒÔÔÚÈÝÆ÷ÖÐpingÖ÷»úµØµã¡£
ËÄ¡¢ÉèÖÃÁýÕÖÍøÂç
ÁýÕÖÍøÂçͨ³£ÓÃÓÚÔÚ¶à½ÚµãµÄDockerÇéÐÎÏ£¬ÊµÏÖ¿çÖ÷»úµÄÈÝÆ÷ͨѶ¡£ÒÔÏÂÊÇÉèÖÃÁýÕÖÍøÂçµÄ°ì·¨¡£
½¨ÉèÍøÂç
$ docker network create -d overlay mynetwork
µÇ¼ºó¸´ÖÆ
Æô¶¯ÈÝÆ÷
$ docker service create --name myservice --network mynetwork nginx
µÇ¼ºó¸´ÖÆ
ʹÓÃÒÔÉÏÏÂÁî¿ÉÒÔÔÚ½¨ÉèЧÀÍʱ½«Æä¼ÓÈëµ½mynetworkÍøÂçÖС£
ÈÝÆ÷Ö®¼äͨѶ
ÔÚÁýÕÖÍøÂçÖУ¬¿ÉÒÔʹÓÃЧÀÍÃû³Æ¾ÙÐÐÈÝÆ÷¼äµÄͨѶ¡£
$ docker exec -it mycontainer1 ping myservice
µÇ¼ºó¸´ÖÆ
ÒÔÉÏÏÂÁî¿ÉÔÚÈÝÆ÷ÖÐpingЧÀÍ¡£
Îå¡¢ÉèÖÃMAC VLANÍøÂç
MAC VLANÍøÂçģʽʹµÃÈÝÆ÷ÓëÎïÀíÍøÂçÖеĽӿÚMACµØµãÏà¹ØÁª£¬²¢ÇÒ¿ÉÒÔÖ±½Ó»ñµÃÒ»¸öÕæʵµÄÎïÀíÍøÂçµØµã¡£ÒÔÏÂÊÇÉèÖÃMAC VLANÍøÂçµÄ°ì·¨¡£
½¨ÉèÍøÂç
$ docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 mynetwork
µÇ¼ºó¸´ÖÆ
Æô¶¯ÈÝÆ÷
$ docker run -d --name mycontainer --network mynetwork nginx
µÇ¼ºó¸´ÖÆ µÇ¼ºó¸´ÖÆ
ʹÓÃÒÔÉÏÏÂÁî¿ÉÒÔÔÚ½¨ÉèÈÝÆ÷ʱ½«Æä¼ÓÈëµ½mynetworkÍøÂçÖС£
ÈÝÆ÷ÓëÎïÀíÍøÂçͨѶ
ÔÚMAC VLANÍøÂçÖУ¬ÈÝÆ÷¿ÉÒÔÖ±½ÓʹÓÃÎïÀíÍøÂçµÄ½Ó¿Ú¾ÙÐÐͨѶ¡£
$ docker exec -it mycontainer ping 192.168.1.2
µÇ¼ºó¸´ÖÆ
ÒÔÉÏÏÂÁî¿ÉÔÚÈÝÆ÷ÖÐpingÎïÀíÍøÂçÖеĵص㡣
×ܽá
ͨ¹ýÒÔÉϵÄÏÈÈÝ£¬ÎÒÃÇÏàʶÁËÔõÑùÔÚLinuxÉÏÉèÖÃÈÝÆ÷µÄÍøÂ硣ƾ֤ÏÖʵÐèÇó£¬ÎÒÃÇ¿ÉÒÔÑ¡ÔñºÏÊʵÄÍøÂçģʽ£¬²¢ÇÒƾ֤ÏìÓ¦µÄ°ì·¨¾ÙÐÐÉèÖá£ÍøÂçµÄÉèÖùØÓÚÈÝÆ÷»¯Ó¦Óõİ²ÅźÍÔËÐкÜÊÇÒªº¦£¬Ï£Íû±¾ÎÄÄܶÔÄúÓÐËù×ÊÖú¡£
ÒÔÉϾÍÊÇÔõÑùÔÚLinuxÉÏÉèÖÃÈÝÆ÷ÍøÂçµÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡