下面使用新创建的my_bridge网络启动容器,并检查网络连通性。
新创建的my_bridge网络信息如下:
指定使用my_bridge网络启动容器mysql3
docker run -itd --name mysql3 --network=my_bridge mysql /bin/bash
docker network inspect my_bridge查询Containers参数如下:
结合前面的容器mysql1和mysql2,整个网络拓扑如下:
在mysql3中ping mysql1和mysql2不通
在mysql1中ping mysql3也不通
这说明处于不同网络中的容器彼此间网络不通,这也印证了容器的网络隔离性。那么不同网络中的容器如何访问呢?
答案:docker network connect
例如:docker network connect my_bridge mysql2
my_bridge网络中增加了容器mysql2。我们进一步查询容器mysql2应用的网络:docker container inspect mysql2
可见容器mysql2使用了两个网络bridge和my_bridge。此时网络拓扑变为:
容器名 容器主机名 使用的网络 绑定的ip
mysql1 9336ebf764fd bridge 172.17.0.2
mysql2 12df3e56ea67 bridge 172.17.0.3
my_bridge 172.18.0.3
mysql3 6b1fd1b2b253 my_bridge 172.18.0.2
此时在检查容器间是否可以连通。
mysql2内可以ping通mysql3
mysql3内可以ping通mysql2
docker network disconnect提供使得容器从网络中断开的功能。
docker network disconnect my_bridge mysql2后网络拓扑重新变为如下:
下一篇:Docker的那些事儿—自定义bridge网络和默认bridge网络比较(25)