前言
今天开始我们学习docker网络:
docker安装时便会为我们创建三种网络模式:host、none、bridge。
查看docker网络
[root@cgls ~] # docker network ls
host网络
容器创建时通过 --network=host 指定使用宿主机网络,此时容器与宿主机共享网络栈,容器内的网络配置和宿主机完全一样。
none网络
容器创建时通过 --network=host 指定容器不创建任何网卡,此时容器里只有lo。
bridge网络
容器创建时不指定--network,那么容器默认使用bridge网络。bridge网络是由docker创建的linux bridge -- docker0提供。
查看网桥
[root@cgls~]# brctl show
查看网桥网关
[root@cgls~]# ifconfig | grep docker0
由于docker0 网桥是安装docker时就默认创建的,我们无法在创建容器的时候指定容器ip,只能由docker0自动分配ip。
如果想要创建容器的时候指定ip,需要自己再建一个bridge网络。
三种网络使用场景:
上面已经介绍了三种docker自带的网络,我们一同设想一下这三种网络适用的场景。
host网络:
选用host网络的容器,其网络栈和宿主机一摸一样,它的优势在于网络性能强于其他网络模式。如果对网络传输有很大需求可以选用host网络。
none网络:
none没有网卡的网络,能做到更加封闭,可以更好的保护重要数据,所以最适合对安全性要求高并且不需要联网的容器。
bridge网络:
bridge网络是通过容器上虚拟网络设备和网桥上虚拟网络设备组成一组veth(相当于虚拟的网线)进行连接的,然后通过docker0从172.17.0.0/16分配ip给容器使用。显而易见bridge网络适用于日常需要连接网络的容器,例如http容器、web容器...