为了了解Docker网络,Docker会自动创建以下网络:
# docker network ls NETWORK ID NAME DRIVER SCOPE 67b4afa88032 bridge bridge local c88f997a2fa7 host host local 1df2947aad7b none null local
我了解到, 桥接网络 代表了所有Docker安装中存在的docker0网络(从链接中引用)。
有人可以帮助我了解其他网络, 托管 和 无 托管 ,如果可能的话,提供示例。
Docker 默认支持3个网络 :
1)无 :
此模式 不会为容器配置任何IP , 也无法访问外部网络以及其他容器 。它具有回送地址,可用于运行批处理作业。
# docker run -it --network=none ubuntu:14.04 /bin/bash root@66308c6686be:/# ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 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) # # docker inspect 66308c6686be | grep -i ipaddr "SecondaryIPAddresses": null, "IPAddress": "", "IPAddress": "",
2)主持人
在这种模式下, 容器将共享主机的网络堆栈,并且来自主机的所有接口将对容器可用 。容器的主机名将与主机系统上的主机名匹配
# docker run -it --net=host ubuntu:14.04 /bin/bash root@labadmin-VirtualBox:/# hostname labadmin-VirtualBox
甚至IP配置也与主机系统的IP配置相同
root@labadmin-VirtualBox:/# ip addr | grep -A 2 eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:b5:82:2f brd ff:ff:ff:ff:ff:ff inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0 valid_lft forever preferred_lft forever 3: lxcbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default root@labadmin-VirtualBox:/# exit exit HOST SYSTEM IP CONFIGURATION # ip addr | grep -A 2 eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:b5:82:2f brd ff:ff:ff:ff:ff:ff inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0 valid_lft forever preferred_lft forever 3: lxcbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default
在主机和无模式下,未直接配置,但是可以配置默认桥接网络以及创建自己的用户定义的桥接网络。
3)桥接模式
这是 Docker的默认联网模式,它将启用到主机的其他接口以及容器之间的连接 。
# docker run -it --network=bridge ubuntu:14.04 /bin/bash root@58b0b1f18b2e:/# ifconfig eth0 Link encap:Ethernet HWaddr 02:42:ac:11:00:0c inet addr:172.17.0.12 Bcast:0.0.0.0 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:16 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:2668 (2.6 KB) TX bytes:0 (0.0 B) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 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)
在桥接模式下可以访问其他容器。
root@58b0b1f18b2e:/# ping 172.17.0.11 PING 172.17.0.11 (172.17.0.11) 56(84) bytes of data. 64 bytes from 172.17.0.11: icmp_seq=1 ttl=64 time=0.143 ms 64 bytes from 172.17.0.11: icmp_seq=2 ttl=64 time=0.050 ms
与外部网络的连接。
root@58b0b1f18b2e:/# ping google.com PING google.com (216.58.197.46) 56(84) bytes of data. 64 bytes from maa03s20-in-f46.1e100.net (216.58.197.46): icmp_seq=1 ttl=51 time=16.9 ms
与主机的连接
root@labadmin-VirtualBox:~# ip a | grep eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0 root@58b0b1f18b2e:/# ping 10.0.2.15 PING 10.0.2.15 (10.0.2.15) 56(84) bytes of data. 64 bytes from 10.0.2.15: icmp_seq=1 ttl=64 time=0.113 ms
连同这些docker提供了MACVLAN网络,该网络允许在单个物理接口上配置多个第2层(MAC)地址。