Her*_*arn 14 docker docker-networking
试图了解docker网络,Docker自动创建以下网络:
# docker network ls
NETWORK ID NAME DRIVER SCOPE
67b4afa88032 bridge bridge local
c88f997a2fa7 host host local
1df2947aad7b none null local
Run Code Online (Sandbox Code Playgroud)
我知道桥接网络代表所有Docker安装中存在的docker0网络,从链接引用.
有人可以帮助我理解其他网络,主机和没有,如果可能的话,举例.
Her*_*arn 22
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": "",
Run Code Online (Sandbox Code Playgroud)
2)主持人
在此模式下,容器将共享主机的网络堆栈,并且主机的所有接口都可供容器使用.容器的主机名将与主机系统上的主机名匹配
# docker run -it --net=host ubuntu:14.04 /bin/bash
root@labadmin-VirtualBox:/# hostname
labadmin-VirtualBox
Run Code Online (Sandbox Code Playgroud)
甚至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
Run Code Online (Sandbox Code Playgroud)
在主机和非模式下没有直接配置,但可以配置默认网桥,也可以创建自己的用户定义网桥.
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)
Run Code Online (Sandbox Code Playgroud)
在桥接模式下可以访问其他容器.
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
Run Code Online (Sandbox Code Playgroud)
连接到外部网络.
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
Run Code Online (Sandbox Code Playgroud)
与主机连接
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
Run Code Online (Sandbox Code Playgroud)
与这些docker一起提供MACVLAN网络,允许在单个物理接口上配置多个第2层(MAC)地址.
Bridge 网络: Bridge 是 docker 中的默认网络,也称为 docker0。它是通过 NAT 防火墙桥接到您的主机所连接到的物理网络的默认网络。但是,我们并不关心它,因为所有容器都将连接到该网络并正常工作。
如果你有任何容器在运行,你可以检查桥接网络,
$ docker network inspect bridge
....
"Containers": {
"145a2716d018c6fe8e9f93a81d88afd5a7437f0084ddb170c40761818e6d2f67": {
"Name": "nginx",
"EndpointID": "ea6cfa433f41e21e572f17473c8e5f5e5d82e9f19646e66fe23abda20a3836b8",
"MacAddress": "02:42:ac:11:00:02",
"IPv4Address": "172.17.0.2/16",
"IPv6Address": ""
}
},
Run Code Online (Sandbox Code Playgroud)
...
注意:您可以看到分配给来自 IPAM 配置子网的容器的自动 IP 地址。
主机网络:是一种特殊的网络,它跳过了 docker 的虚拟网络,将容器直接附加到主机接口。确实不推荐这样做,但在某些情况下,它可以提高高吞吐量网络的性能,而在其他情况下,您将失去容器化的一些好处。
$ docker container run -it --net=host nginx:alpine /bin/bash
Run Code Online (Sandbox Code Playgroud)
无网络:相当于在你的机器上有一个没有附加到任何东西的接口,但我们可以创建我们自己的接口。所述none
网络增加了一个容器的容器专用的网络栈。该容器缺少网络接口。
$ docker container run -it --network=none nginx:alpine /bin/bash
root@8cb783cd4509:/# ip -4 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7793 次 |
最近记录: |