新建的容器和宿主机之间是类似于虚拟机的桥接模式一样的关系,所以能正常上网
同时宿主机有一个docker0的网卡,每创建一个容器就会多出来一个网卡,这个网卡的描述信息是和在容器内使用ip addr命令出来的网卡信息是一样的。这种成对出现的技术就叫做evth-pair技术。
注意,所有的网络接口都是虚拟的。因此效率也比较高。

其实docker内部如同,如同一个小型的内部局域网一样,两个容器之间ping的时候经过docker0这个路由器,它查找自己的路由表或者进行广播来转发报文。
尽管上面的网络能解决大多数问题,但是还有一个场景。如果docker崩掉,或者docker重启,那么不同容器的IP地址就会被重新分配,那么原来docker中的某个服务若是绑定了IP,那么此时服务就会宕掉。
此时可以自己创建一个docker网络(因为默认的docker网络是不支持绑定IP的),然后再运行容器的时候将容器与IP绑定,那么此时IP就不会变了。(但是绑定IP的话对于维护的话可能有点笨重)
另外就是使用—link技术,这种技术可以让两个容器之间只使用容器名就可以相互访问。—link的原理其实就是相当于在/etc/hosts下面做了一个映射。
因此使用—link只能单向ping容器名ping通,而不是两个容器双向ping容器名都能ping通。因此—link有点笨重,现在基本上是自定义创建一个docker网络来做。
一个docker自定义网络net1中的容器与自定义网络net2中的容器不能相互ping通,因为是在两个不同的局域网下面的,但是可以使用docker network connect命令将net1一个容器添加到net2中去,此时这个容器就可以与net2中所有的容器都能ping通。此时相当于一个容器两个ip地址。
