docker网络自定义
docker网络自定义
书接上回,我们认识了docker0网络以及–link参数的使用:
https://blog.csdn.net/hello_list/article/details/124815842
今天来了解下docker自定义网络;
那我们这里就可以自己定义自己的网络,其实就是在docket0下,再开多个网关,docket提供了我们这样的机制:
我们可以查看docket的网络:
docker network ls
我们可以看到docker网络模式有这么几个:
bridge:桥接 ---默认的host:主机模式null:没有网络
为了方便我们构建一个自己的镜像;
这里我也使用了通过dockerfile方法去构建可以去看这个,通过这个例子刚好写了一遍dockerfile构建镜像:
这里可以通过dockerfile去用脚本构建,但是这里我们已经做好一个tomcat03了,这里我们使用commit把这个容器打包成镜像使用:
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]
现在我们把运行的全部容器删除:
docker rm -f $(docker ps -aq)
我们可以通过–help查看帮助文档,这里就说帮助文档了,我们直接看怎么使用
我们创建一个自己的网络:
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 tomcatnet
我们可以看到自己创建的tomcat集群局域网内网环境就搭建好了
查看自己tomcatnet的网络:
docker network inspect 网络id
这样我们再启动容器,放在我们自己的网段下:
docker run -it -d -P --name tomcat01 --net tomcatnet mynettomcat:1.0 docker run -it -d -P --name tomcat02 --net tomcatnet mynettomcat:1.0
启动了两个容器,我们再看下网络:
我们发现这里就添加了分配了容器ip
我们尝试进入容器,容器与容器之间ping 下网络:
那我们尝试下容器名,我们发现也是可以ping通的
发现这样是不是很方便呢,这样我们就可以搭建不同的集群,mysql一个网段,tomcat一个网段,互不干扰;
容器互相连通
但是我们的一个tomcat容器需要连接一个mysql容器,那怎么办呢?像这样:
我们再开启一个容器,在默认的bridge网段:
docker run -it -P -d --name tomcat-bridge01 tomcat:9.0
我们进入 tomcat-bridge01 去ping tomcat01,不行
首先他们根本不在一个网段,怎么可能ping的通:
我们知道默认的是在172.17.0.2这个网段,我们想进行容器间的互联互通就可以这样:
docker network connect tomcatnet tomcat-bridge01
我们再进入容器,然后ping下tomcat01
我们发现可以ping通了,那原理是什么呢?
我们查看下tomcatnet网络
docker network inspect
我们发现就是把容器的网络,添加在了这个网段中:
这样我们在做集群的时候就可以通过自定义网络,很方便的就把不同容器间的集群就可以完成了;
后面我们可以搭建一个mysql集群,看到这里就给博主三连一下吧,bye~