Docker网络出现的原因

Docker容器在运行时,会涉及到多个容器相连接,或者与宿主机上应用连接的问题,所以Docker才会有网络的概念。

虚拟中心节点网卡

在Docker安装时,Docker会自动创建三个虚拟中心节点网卡,同时在宿主机上创建一个名为docker0的虚拟中心网卡。

docker0

docker0:

  1. [mpsp@localhost ~]$ ifconfig
  2. docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
  3. inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0
  4. inet6 fe80::42:60ff:fed9:1b6e prefixlen 64 scopeid 0x20<link>
  5. ether 02:42:60:d9:1b:6e txqueuelen 0 (Ethernet)
  6. RX packets 8 bytes 536 (536.0 B)
  7. RX errors 0 dropped 0 overruns 0 frame 0
  8. TX packets 8 bytes 648 (648.0 B)
  9. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  10. lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
  11. inet 127.0.0.1 netmask 255.0.0.0
  12. inet6 ::1 prefixlen 128 scopeid 0x10<host>
  13. loop txqueuelen 1 (Local Loopback)
  14. RX packets 2877 bytes 189486 (185.0 KiB)
  15. RX errors 0 dropped 0 overruns 0 frame 0
  16. TX packets 2877 bytes 189486 (185.0 KiB)
  17. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  18. p4p1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  19. inet 10.0.0.249 netmask 255.255.255.0 broadcast 10.0.0.255
  20. inet6 fe80::9922:a9d5:f9ae:eec9 prefixlen 64 scopeid 0x20<link>
  21. ether d4:be:d9:c6:8a:02 txqueuelen 1000 (Ethernet)
  22. RX packets 6752226 bytes 1955322839 (1.8 GiB)
  23. RX errors 0 dropped 10 overruns 0 frame 0
  24. TX packets 5974788 bytes 1069340386 (1019.8 MiB)
  25. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

默认创建的三个虚拟中心网卡

三个虚拟的中心节点网卡:

  1. NETWORK ID NAME DRIVER SCOPE
  2. b87d805892b7 bridge bridge local
  3. 5c3d1d8a8a10 host host local
  4. 43d8f499771c none null local
  • bridge网卡(默认):如果创建容器时选择此网卡,Docker会为容器分配IP,并通过宿主机的docker0网卡与外部通信。
  • host网卡:如果创建容器时选择此网卡,Docker不会为容器分配IP,而是直接使用宿主机的IP和端口。
  • none网卡:如果创建容器时选择此网卡,Docker会关闭容器的网络功能。