Docker的那些事儿—自定义bridge网络和默认bridge
上一篇:Docker的那些事儿—使用自定义网络启动容器(24)
通过前面几节的讲解,我们知道bridge网络使得处于相同网路下的容器间可以相互访问,对不同网络下的容器提供了网络隔离。那么默认bridge网络和自定义bridge网络是不是完全一样?当然不是。
是否可以删除?
自定义的bridge网络可以删除,默认bridge网络不可删除
是否可以通过容器名通信
默认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
形成的网络拓扑为:
使用默认bridge网络的容器间可以通过IP访问,不可以通过容器名访问。
使用自定义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
总结如下:
1、自定义的bridge网络可以删除,默认bridge网络不可删除。
2、默认bridge网络中所有容器间只能用IP相互访问。自定义bridge网络中所有容器除ip访问外,还可以直接用容器名作为hostname相互访问。
3、docker run指定容器ip启动时仅适用于自定义网络。
下一篇:Docker的那些事儿—容器间的通信方式(26)