Docker网络模型

1. NAT (默认)

配置信息在 /etc/docker/daemon.json 中配置, 默认网段为172.17.0.0/16, 可在 ip a 中查看到 docker0 虚拟网卡信息

[root@docker ~]# docker run --rm -it alpine:latest /bin/sh
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  inet 127.0.0.1/8 scope host lo
  valid_lft forever preferred_lft forever
5: eth0@if6: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP
  link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
  inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
  valid_lft forever preferred_lft forever

 


2. none ( 不使用网络 )

使用方法 : --net=none
多用于不对外提供网络接口的服务

[root@docker ~]# docker run --rm -it --net=none alpine:latest /bin/sh
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  inet 127.0.0.1/8 scope host lo
  valid_lft forever preferred_lft forever

 

3. host ( 和宿主机共享一个网络空间 )

使用方法 : --net=host

[root@docker ~]# docker run --rm -it --net=host alpine:latest /bin/sh
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  inet 127.0.0.1/8 scope host lo
  valid_lft forever preferred_lft forever
  inet6 ::1/128 scope host
  valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
  link/ether 00:0c:29:28:f1:85 brd ff:ff:ff:ff:ff:ff
  inet 192.168.40.220/24 brd 192.168.40.255 scope global noprefixroute eth0
  valid_lft forever preferred_lft forever
  inet6 fe80::73e6:acc9:d7a7:c7b4/64 scope link noprefixroute
  valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
  link/ether 00:0c:29:28:f1:8f brd ff:ff:ff:ff:ff:ff
  inet 172.16.1.220/24 brd 172.16.1.255 scope global noprefixroute eth1
  valid_lft forever preferred_lft forever
  inet6 fe80::e07a:dac0:32ab:941b/64 scope link noprefixroute
  valid_lft forever preferred_lft forever
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN
  link/ether 02:42:e4:0e:c0:2c brd ff:ff:ff:ff:ff:ff
  inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
  valid_lft forever preferred_lft forever
  inet6 fe80::42:e4ff:fe0e:c02c/64 scope link
  valid_lft forever preferred_lft forever

 


4. 联合网络 ( 和另一个容器共享网络空间 )

使用方法 : --net=container:container_id

docker run -itd --name LianHeWangLuo0 alpine:latest # 先启动一个容器

[root@docker
~]# docker exec -it LianHeWangLuo0 /bin/sh / # ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00   inet 127.0.0.1/8 scope host lo   valid_lft forever preferred_lft forever 9: eth0@if10: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP   link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff   inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0   valid_lft forever preferred_lft forever docker run -itd --net=container:76fb9e024831 --name LianHeWangLuo2 alpine:latest # 和另一个容器共享网络空间
[root@docker
~]# docker exec -it LianHeWangLuo2 /bin/sh / # ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00   inet 127.0.0.1/8 scope host lo   valid_lft forever preferred_lft forever 9: eth0@if10: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP   link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff   inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0   valid_lft forever preferred_lft forever / #