在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
•docker network create 创建网络 zane@zane-V:~$ docker network create simple-network zane@zane-V:~$ docker network inspect simple-network { "Name": "simple-network", "Id": "8bf58f43c56622d1100f7da9ef6506e45a4aa68556b586311f3756130c311d75", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": {}, "Config": [ { "Subnet": "172.20.0.0/16", "Gateway": "172.20.0.1/16" } ] }, "Internal": false, "Containers": {}, "Options": {}, "Labels": {} } •进入一个键值存储。引擎支持Consul,Etcd,ZooKeeper. 支持overlay网络的docker选项: •--cluster-store-opt 使用--subnet选项直接指定子网络,在bridge网络中只可以指定一个子网络,而在overlay网络中支持多个子网络。 $ docker network create -d overlay \ --subnet=192.168.0.0/16 \ --subnet=192.170.0.0/16 \ --gateway=192.168.0.100 \ --gateway=192.170.0.100 \ --ip-range=192.168.1.0/24 \ --aux-address="my-switch=192.168.1.6" \ --aux-address="my-nas=192.170.1.6" \ 如何要创建自己定制的网络,docker也是支持很多选项的。 $ docker run -d -P --name redis --network my-network redis $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bafb0c808c53 redis "/entrypoint.sh redis" 4 seconds ago Up 3 seconds 172.23.0.1:32770->6379/tcp redis 连接容器 可以连接已存在的容器到一个或者多个网络中。一个容器可以连接到多个不同网络驱动的网络中。 基本容器网络实例: 1.创建两个容器,container1 和 container2 $ docker run -itd --name=container1 busybox $ docker run -itd --name=container2 busybox zane@zane-V:~$ docker network create -d bridge --subnet 172.25.0.0/16 isolated_nw 3.连接container2到这个网络,然后验证一下: zane@zane-V:~$ docker network connect isolated_nw container2 zane@zane-V:~$ docker network inspect isolated_nw { "Name": "isolated_nw", "Id": "a8208641505d2d8fc37bf7cbd1027c01f0def461815786e076ef4ae65b7b2f9b", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": {}, "Config": [ { "Subnet": "172.25.0.0/16" } ] }, "Internal": false, "Containers": { "e9bce535ae32945f5e43340facdb6c16c93d92119e85b61c6cb7a5379a0caf63": { "Name": "container2", "EndpointID": "ef7244d32484407c3ec4aa30b7bdb0a6cbe3dbbfedc03e5c856ad20a08af172f", "MacAddress": "02:42:ac:19:00:02", "IPv4Address": "172.25.0.2/16", "IPv6Address": "" } }, "Options": {}, "Labels": {} } 注意container2,自动分配到了IP地址。此时container1,仍然连接在默认的bridge网络。 4.启动第三个container,但是这是使用--ip 选项指定它的IP地址, zane@zane-V:~$ docker run --network=isolated_nw --ip=172.25.3.3 -itd --name=container3 busybox 5.检查container3使用的是哪个网络: "Networks": { "isolated_nw": { "IPAMConfig": { "IPv4Address": "172.25.3.3" }, "Links": null, "Aliases": [ "adf68dd9e09c" ], "NetworkID": "a8208641505d2d8fc37bf7cbd1027c01f0def461815786e076ef4ae65b7b2f9b", "EndpointID": "71d5d272d056b6111a83f0843a10d1944f1648f34d5099258d5865d053a939b0", "Gateway": "172.25.0.1", "IPAddress": "172.25.3.3", "IPPrefixLen": 16, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "02:42:ac:19:03:03" } } } 6.检查container2使用的是哪个网络: "Networks": { "isolated_nw": { "Aliases": [ "e9bce535ae32" ], "EndpointID": "ef7244d32484407c3ec4aa30b7bdb0a6cbe3dbbfedc03e5c856ad20a08af172f", "Gateway": "172.25.0.1", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "IPAMConfig": {}, "IPAddress": "172.25.0.2", "IPPrefixLen": 16, "IPv6Gateway": "", "Links": null, "MacAddress": "02:42:ac:19:00:02", "NetworkID": "a8208641505d2d8fc37bf7cbd1027c01f0def461815786e076ef4ae65b7b2f9b" } }, 注意:container2 在两个网络中间,它加入了默认bridge网络,当你在创建它的时候,然后又连接它到了isolation_nw. 一个容器可以连接到多个网络中 7.使用docker attach 命令连接一个正在运行的容器,然后查看 zane@zane-V:~$ docker attach container2 / # ifconfig -a eth1 Link encap:Ethernet HWaddr 02:42:AC:19:00:02 inet addr:172.25.0.2 Bcast:0.0.0.0 Mask:255.255.0.0 inet6 addr: fe80::42:acff:fe19:2/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:86 errors:0 dropped:0 overruns:0 frame:0 TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:11780 (11.5 KiB) TX bytes:648 (648.0 B) eth2 Link encap:Ethernet HWaddr 02:42:AC:11:00:03 inet addr:172.17.0.3 Bcast:0.0.0.0 Mask:255.255.0.0 inet6 addr: fe80::42:acff:fe11:3/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:23 errors:0 dropped:0 overruns:0 frame:0 TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:3809 (3.7 KiB) TX bytes:648 (648.0 B) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) 8.可以通过容器名称来相互连接 / # ping -w 4 container3 PING container3 (172.25.3.3): 56 data bytes 64 bytes from 172.25.3.3: seq=0 ttl=64 time=0.077 ms 64 bytes from 172.25.3.3: seq=1 ttl=64 time=0.049 ms 64 bytes from 172.25.3.3: seq=2 ttl=64 time=0.047 ms 64 bytes from 172.25.3.3: seq=3 ttl=64 time=0.054 ms 虽然container1 和 container2 都在bridge网络中,但是他们是不支持 容器名称通信的。 zane@zane-V:~$ docker attach container2 / # ping container3 PING container3 (172.25.3.3): 56 data bytes 64 bytes from 172.25.3.3: seq=0 ttl=64 time=0.042 ms 64 bytes from 172.25.3.3: seq=1 ttl=64 time=0.050 ms 64 bytes from 172.25.3.3: seq=2 ttl=64 time=0.063 ms --- container3 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 0.042/0.051/0.063 ms / # ping -w 4 container1 ping: bad address 'container1' / # ping -w 4 172.17.0.2 PING 172.17.0.2 (172.17.0.2): 56 data bytes 64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.104 ms 64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.052 ms 64 bytes from 172.17.0.2: seq=2 ttl=64 time=0.127 ms 64 bytes from 172.17.0.2: seq=3 ttl=64 time=0.057 ms --- 172.17.0.2 ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 0.052/0.085/0.127 ms 注意退出attach 时,使用ctr-p + ctr-q. zane@zane-V:~$ docker attach container3 / # ping -w 4 172.17.0.2 PING 172.17.0.2 (172.17.0.2): 56 data bytes --- 172.17.0.2 ping statistics --- 4 packets transmitted, 0 packets received, 100% packet loss 上面的实验我们知道,用户自定义的网络,是可以相互解析容器名的,也就是可以用容器名来相互同行。 •定义网络别名 •--link=CONTAINER-NAME:ALIAS 1.断开container2和isolated_nw的连接,然后 zane@zane-V:~$ docker network disconnect isolated_nw container2 zane@zane-V:~$ docker network rm simple-network •创建网络 • •overlay网络条件 •进入一个键值存储 •支持overlay网络的docker选项 •指定子网络,网关,地址范围 •将容器添加到网络中 •连接一个正在运行的容器 •docker attach •attach 的退出 •ctr p + ctr q •默认bridge网络不支持,容器名称通信,其他网络支持; •使用link 来支持默认网络的容器名称通信 •断开连接
•删除网络
•检测网络
|
请发表评论