Docker的那些事儿—自定义bridge网络和默认bridge网络比较(25)


上一篇:Docker的那些事儿—使用自定义网络启动容器(24)


通过前面几节的讲解,我们知道bridge网络使得处于相同网路下的容器间可以相互访问,对不同网络下的容器提供了网络隔离。那么默认bridge网络和自定义bridge网络是不是完全一样?当然不是。

是否可以删除?

自定义的bridge网络可以删除,默认bridge网络不可删除

Docker的那些事儿—自定义bridge网络和默认bridge网络比较(25)_第1张图片

是否可以通过容器名通信

默认bridge网络中所有容器间只能用IP相互访问。自定义bridge网络中所有容器除ip访问外,还可以直接用容器名作为hostname相互访问。原因在于Docker从1.10版本内嵌了了一个DNS服务,使得容器间可以直接通过容器名通信。

启动4个容器:

docker run -itd --name mysql1 --network=bridge mysql /bin/bash

docker run -itd --name mysql2 --network=bridge mysql /bin/bash

docker run -itd --name mysql3 --network=my_bridge mysql /bin/bash

docker run -itd --name mysql4 --network=my_bridge mysql /bin/bash

形成的网络拓扑为:

Docker的那些事儿—自定义bridge网络和默认bridge网络比较(25)_第2张图片
Docker的那些事儿—自定义bridge网络和默认bridge网络比较(25)_第3张图片
Docker的那些事儿—自定义bridge网络和默认bridge网络比较(25)_第4张图片

使用默认bridge网络的容器间可以通过IP访问,不可以通过容器名访问。

Docker的那些事儿—自定义bridge网络和默认bridge网络比较(25)_第5张图片
Docker的那些事儿—自定义bridge网络和默认bridge网络比较(25)_第6张图片

使用自定义bridge网络的容器间既可以通过ip访问,也可以通过容器名访问。

docker run指定容器ip启动时仅适用于自定义网络

docker run -itd --network bridge --name mysql5 --ip 172.17.0.10 mysql /bin/bash

docker run -itd --network my_bridge --name mysql5 --ip 172.17.0.10 mysql /bin/bash

docker run -itd --network my_bridge --name mysql6 --ip 172.18.0.10 mysql /bin/bash

Docker的那些事儿—自定义bridge网络和默认bridge网络比较(25)_第7张图片
Docker的那些事儿—自定义bridge网络和默认bridge网络比较(25)_第8张图片

总结如下:

1、自定义的bridge网络可以删除,默认bridge网络不可删除。

2、默认bridge网络中所有容器间只能用IP相互访问。自定义bridge网络中所有容器除ip访问外,还可以直接用容器名作为hostname相互访问。

3、docker run指定容器ip启动时仅适用于自定义网络。


下一篇:Docker的那些事儿—容器间的通信方式(26)



Docker的那些事儿—自定义bridge网络和默认bridge网络比较(25)_第9张图片

你可能感兴趣的:(Docker的那些事儿—自定义bridge网络和默认bridge网络比较(25))