- 简介
建议使用用户定义的网桥来控制哪些容器可以相互通信,以及启用容器名称到IP地址的自动DNS解析。 - 查看所有的Docker网络
命令:docker network ls - 网络模式解释 1)bridge :桥接 docker(默认),一般我们创建网络也使用桥接模式
2)host :和宿主机共享网络
3)none :不配置网络
4)container:容器网络连通(用的少!局限很大!) - 启动容器命令解释
1)我们直接启动命令,有默认的参数,只是省略掉了 --net bridge,而这个就是我们的docker0
docker run -d -P --name tomcat01 tomcat
上面的命令等同于下面的启动容器命令
docker run -d -P --name tomcat01 --net bridge tomcat - 自定义创建一个网络
1)命令:
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
解释:
--driver bridge 表示使用桥接模式
--subnet 192.168.0.0/16 表示子网ip 可以分配 192.168.0.2 到 192.168.255.255
--gateway 192.168.0.1 表示网关,就是路由器
mynet- 网络名
注意:
192.168.0.0/16:表示网络码占16位,也就是说该网络上只可以有65534个主机(2^16-2)IP范围:192.168.0.1~192.168.255.254 192.168.255.255是广播地址,
不能被主机使用。设置IP地址的时候:192.168.x.y 子网掩码:255.255.0.0
2)执行上面的命令
3)查看我们刚刚自定义的网络
命令:docker network inspect mynet
4)下面我们启动容器并且指定使用我们刚刚创建的网络
5)我们再次查看网络信息
命令:docker network inspect mynet
6)下面我们直接使用两个容器进行ping一下,测试是否能够连接
我们再次使用mytomcat01去连接mytomcat02
可以发现我们使用自定义的网络,容器直接网络都是可以互通的(可以使用容器名称,也可以使用ip地址),它修复了docker0所不完善的地方,我们不需要再使用--link了。
7)小节:
a:不同集群可以使用不同网络,保证集群的健康和安全,比如我们搭建一个mysql集群和一个redis集群,那么我们就自定义两个网络即可
b: 自定义网络已经维护好了对应的关系,方便使用服务名通讯 - 网络连通
1)简介
上面我们创建了两个容器mytomcat01和mytomcat02,它们指定的都是我们自定义的网络mynet,那么我们如何让它们和不同网络的容器链接呢?
比如我们先又创建两个容器mytomcat03和mytomcat04,我们指定这两个容器属于默认的docker0网络,那么我们如何让mytomcat03可以ping通mytomcat01呢?
2)首先创建mytomcat03和mytomcat04容器
可以发现它们的网段都不一样:
mytomcat01和mytomcat03属于:192.168.0.x
mytomcat01和mytomcat03属于:172.17.0.x
3)下面我们测试使用mytomcat01去ping通mytomcat03
4)解决的办法(我们要做的其实是将容器和网络(比如我们自定义的mynet)链接,不是docker0和网络链接):
命令:docker network connect 网络名词 容器id
例如打通mytomcat03和mynet的网络
我们在通过docker network inspect mynet查看一下网络情况:
我们发现mytomcat03在mynet网络中也出现了一个新的ip地址,说明mytomcat03在docker0中有一个ip,在mynet中也有一个ip地址,
这就是一个容器两个ip地址。类似于我们的阿里云服务器有一个公网ip和一个私网ip
5)那么我们再使用mytomcat01去链接一下mytomcat03试一下
docker host 如何创建一个network 创建docker网络
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Vue3 创建一个应用
Vue3 创建一个应用
vite vue