Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
DockerÍøÂç¹ÜÀí»úÖÆÊµÀý½âÎö+´´½¨×Ô¼ºDockerÍøÂç
 
  2829  次浏览      29
 2018-4-13 
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚcsdn£¬ÊµÀý½âÎöDockerÍøÂç¹ÜÀí»úÖÆ,½éÉÜDockerĬÈϵÄÍøÂ緽ʽ,²¢´´½¨×Ô¼ºµÄÍøÂçÇŽӷ½Ê½,½«¿ª·¢µÄÈÝÆ÷Ìí¼ÓÖÁ×Ô¼ºÐ½¨µÄÍøÂç,Ìá¸ßDockerÍøÂ簲ȫºÍͨÐÅ.

1.¸ø×Ô¼ºµÄdocker (Dcoker1.12GA)ÈÝÆ÷Æð¸öÃû³Æ

¸ødockerÃû³ÆµÄºÃ´¦ÊÇ:

- ÈÝÒ×¼Ç

- ¿ÉÒÔͨ¹ýÌØÊâÃüÁî,ʹµÃÃû³Æ¿ÉÒÔÔÚÈÝÆ÷ºÍÈÝÆ÷Ö®¼äʹÓÃ

1.1.²é¿´dockerÒѾ­´æÔڵľµÏñ

wxl@wxl-pc:~$ docker images

1.2.Ñ¡Ôñtraining/webappÕâ¸ö¾µÏñ,ͨ¹ý¨CnameÃüÁîÉèÖÃÃû³Æ

wxl@wxl-pc:~$ docker run -d -P --name wangxiaoleiweb training/webapp python app.py

×îºóÒ»ÐпÉÒÔ¿´µ½wangxiaoleiwebÒѾ­ÃüÃû³É¹¦

¿ÉÒÔʹÓÃdocker inspectͨ¹ý¸Õ¸ÕÉèÖõÄÃû³ÆÀ´²é¿´wangxiaoleiweb

wxl@wxl-pc:~$ docker inspect wangxiaoleiweb

1.3.ɾ³ýdockerÃû³Æ,dockerµÄÃû³Æ¶¼ÊÇΨһµÄ,¼´Ò»µ«Ê¹ÓÃÁ˾Ͳ»ÄÜÔÚÁíÒ»¸ö¾µÏñʹÓøÃÃû³Æ,¿ÉÒÔɾ³ýºóÖØÐÂÃüÃû.(ֻɾ³ýÃû×Ö,¾µÏñ²»»á±»É¾³ý)

2.ĬÈϵÄÈÝÆ÷µÄÍøÂç

2.1.Dockerͨ¹ýÍøÂçÇý¶¯(network driver),ĬÈÏÍøÂçÇý¶¯·Ö±ðÊÇÇŽÓ(bridge)ºÍ¸²¸Ç(overlay)Á½ÖÖ.

Ϊһ¸öÈÝÆ÷ÇŽÓÍøÂç

wxl@wxl-pc:~$ docker run -itd --name =networktest ubuntu:14.04

2a433c9467d3d35474 daa544dcac665ecc4b71b202b8 2d0bd59049f7d52e397f


wxl@wxl-pc:~$ docker network inspect bridge
[
{
"Name": "bridge",
"Id": "7f6b9cbd3eece7301 d196363b5250c44fd0b 275f3c3d38a952 af2ad8b2fd38c2",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
}
]
},
"Internal": false,
"Containers": {
"2a433c9467d3d35474daa 544dcac665ecc4b71b 202b82d0bd590 49f7d52e397f": {
"Name": "networktest",
"EndpointID": "d0b94ec934b390784faa 5ad8946e9ba6031afe446 7889e1f7fe0eda5d79deac1",
"MacAddress": "02:42:ac:11:00:02",
"IPv4Address": "172.17.0.2/16",
"IPv6Address": ""
}
},
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "1500"
},
"Labels": {}
}
]

¿ÉÒÔ¿´µ½Í¨¹ý¼ì²éÍøÂç¿ÉÒÔ¿´µ½ÈÝÆ÷µÄIPµØÖ·,Ãû³ÆµÈÐÅÏ¢.

2.2.´ÓÍøÂçÖÐɾ³ýij¸öÈÝÆ÷,¿ÉÒÔͨ¹ý¸ÃÈÝÆ÷µÄÍøÂçÃû³Æ,ÈÝÆ÷Ãû³Æ,idÀ´×÷Ϊɾ³ýµÄ±êʾ,µ«ÊÇͨ¹ýÍøÂçÃû³ÆÊÇ·½±ãµÄ,Èçnetworktest

wxl@wxl-pc:~$ docker network disconnect bridge networktest

ÔÙÓÃdocker network inspect bridge»á·¢ÏÖÒѾ­Ã»ÓÐnetworktestÐÅÏ¢ÁË

3.×Ô¶¨ÒåÈÝÆ÷µÄÍøÂç

ÈÝÆ÷µÄÍøÂç(network)ÊÇÓÃÀ´¸ôÀëÈÝÆ÷ºÍÈÝÆ÷Ö®¼ä»òÕßÍøÂçÓëÍøÂçÖ®¼äµÄ·½·¨,ËùÒÔ,ËùÒÔÎÒÃÇͨ¹ý½¨Á¢ÍøÂçÀ´¸ôÀëÈÝÆ÷.ÆäÖÐ,ÄÚÖõÄbridgeÍøÂçÊÇÎÞ·¨É¾³ýµÄ.

3.1.´´½¨ÍøÂç

Docker Engine Ö§³ÖÁ½ÖÖÍøÂçÇŽÓÍøÂç(bridge network)ºÍ¸²¸ÇÍøÂç(overlay network),ÇŽӵÄÍøÂç¾ÖÏÞÓÚµ¥¸öÖ÷»úÔËÐеÄDocker Engine,¶ø¸²¸ÇÍøÂç¿ÉÒÔ°üº¬¶à¸öÖ÷»ú.

wxl@wxl-pc:~$ docker network create -d bridge my-bridge-network

3bfde1ba62a75e3823 6517f4f0731f48c281cec 107e976039773be134968c453

ÆäÖÐ,-dָʹÓÃDockerbridge(ÇŽÓ)·½Ê½µÄÍøÂç,Èç¹ûûÓмÓĬÈϵÄÒ²ÊÇÇŽÓÍøÂç.

ͨ¹ýdocker network lsÀ´²é¿´ÒѾ­´´½¨ºÃµÄÍøÂç

3.2.½«Ò»¸öÈÝÆ÷Ìí¼ÓÖÁд´½¨µÄÍøÂçÖÐ

#ÕâÀï´´½¨ÁËÒ»¸ödbµÄÈÝÆ÷(Èô±¾µØÃ»ÓиþµÏñ»á×Ô¶¯À­È¡)

wxl@wxl-pc:~$ docker run -d --network=my-bridge-network --name db training/postgres

ͨ¹ýinspectÃüÁî²é¿´ÒѾ­Ìí¼ÓÖÁÍøÂçµÄdbÈÝÆ÷

wxl@wxl-pc:~$ docker inspect --format= '{{json .NetworkSettings.Networks}}' db

{"my-bridge-network": {"IPAMConfig":null,"Links":null, "Aliases":["237e0f7060b6"], "NetworkID":"3bfde1ba62a75e3823 6517f4f0731f48c281 cec107e976039773be1 34968c453" ,"EndpointID":" 33516faca38c0f76b d2c6ebb6e8c2574c62e242 d5a0c10b77c49e14 b2549f3e5", "Gateway":" 172.18.0.1"," IPAddress":"172.18.0.2", "IPPrefixLen":16 ,"IPv6Gateway":"", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen" :0, "MacAddress":" 02:42:ac:12:00:02"}}

3.3.ͨ¹ýpingµÄ·½Ê½ÑéÖ¤ÍøÂçÁ¬Í¨ÐÔ,½«Á½¸öÈÝÆ÷(dbÈÝÆ÷ºÍwebÈÝÆ÷)´Ó²»Í¬µÄÍøÂç,·ÅÖÃͬһ¸öÍøÂç.

3.3.1.°Ñtraining/webappÈÝÆ÷ÃüÃûΪweb,·½±ãºóÐø²Ù×÷

wxl@wxl-pc:~$ docker run -d --name web training/webapp python app.py


8f12cfaaedda2b348bef437 fa2eeed19ef69ad07 cd98aa72e0c2113710413e6f

3.3.2.²é¿´webÈÝÆ÷µÄip

wxl@wxl-pc:~$ docker inspect --format= '{{range .NetworkSettings.Networks}} {{.IPAddress}}{{end}}' web


172.17.0.2

3.3.3.½øÈëdbÈÝÆ÷²¢ÇÒ³¢ÊÔpingÒ»ÏÂwebÈÝÆ÷,·¢ÏÖÊÇping²»Í¨,ctrl+cÖÕÖ¹ping,ÈçÏÂͼ

#½øÈëdbÈÝÆ÷
wxl@wxl-pc:~$ docker exec -it db bash
#Ê״γ¢ÊÔping webÈÝÆ÷
root@237e0f7060b6:/# ping 172.17.0.2

PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.
^C
--- 172.17.0.2 ping statistics ---
24 packets transmitted, 0 received, 100% packet loss, time 23183ms

root@237e0f7060b6:/# exit

3.3.4.ÏÖÔÚ,½«webÈÝÆ÷Ìí¼ÓÖÁdbÈÝÆ÷µÄÍøÂç(¼´my-bridge-network),È»ºóÔÚping,¼´¿Épingͨ

wxl@wxl-pc:~$ docker network connect my-bridge-network web


#ÔٴνøÈëdbÈÝÆ÷
wxl@wxl-pc:~$ docker exec -it db bash
#ping webÈÝÆ÷,·¢ÏÖÒѾ­¿ÉÒÔpingͨ
root@237e0f7060b6:/# ping web
PING web (172.18.0.3) 56(84) bytes of data.
64 bytes from web.my-bridge-network (172.18.0.3): icmp_seq=1 ttl=64 time=0.097 ms
64 bytes from web.my-bridge-network (172.18.0.3): icmp_seq=2 ttl=64 time=0.110 ms
64 bytes from web.my-bridge-network (172.18.0.3): icmp_seq=3 ttl=64 time=0.109 ms
^C
--- web ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.097/0.105/0.110/0.010 ms

¿É¼û,²»Í¬µÄÈÝÆ÷ÔÚ²»Í¬µÄÍøÂçÊÇ¿ÉÒÔÆðµ½¸ôÀë×÷ÓõÄ,ËùÒÔ,×Ô¶¨ÒåÒ»¸öÍøÂç¿ÉÒÔ±£Ö¤ÈÝÆ÷ºÍÈÝÆ÷Ö®¼äͨÐŰ²È«.

   
2829 ´Îä¯ÀÀ       29
Ïà¹ØÎÄÕÂ

ÔÆ¼ÆËãµÄ¼Ü¹¹
¶ÔÔÆ¼ÆËã·þÎñÄ£ÐÍ
ÔÆ¼ÆËãºËÐļ¼ÊõÆÊÎö
Á˽âÔÆ¼ÆËãµÄ©¶´
Ïà¹ØÎĵµ

ÔÆ¼ÆËã¼ò½é
ÔÆ¼ÆËã¼ò½éÓëÔÆ°²È«
ÏÂÒ»´úÍøÂç¼ÆËã--ÔÆ¼ÆËã
ÈídzÎöÔÆ¼ÆËã
Ïà¹Ø¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤