docker学习(十)——自定义网络

自定义网络

网络模式

  • bridge:桥接 docker(默认)
  • none: 不配置网络
  • host:和宿主机共享网络
  • container: 容器网络连通(用的少,局限很大)

查看帮助文档docker network --help
docker学习(十)——自定义网络
我们使用这个命令来创建一下网络(先把容器都清楚保证环境的干净)
先测试下:
docker学习(十)——自定义网络
创建一个桥接网络的tomcat01
其实这个命令和不使用是一样的,因为docker给我们创建容器的时候这个参数是默认的即

docker run -d -P --name tomcat01 --net bridge tomcat
docker run -d -P --name tomcat01 tomcat
这两个命令是相同的

docker 0特点, 默认,域名不能访问, --link可以打通连接
我们可以自定义一个网络:
docker学习(十)——自定义网络
查看创建好的网络
docker学习(十)——自定义网络
查看详情:
docker学习(十)——自定义网络
现在我们创建两个tomcat容器并让其在我们自定义的网络中运行
docker学习(十)——自定义网络
两个容器运行成功后再次查看mynet自定义网络,会发现有了我们刚创建的两个容器
docker学习(十)——自定义网络

此时我们在容器tomcat02中pingtomcat03,不管是ping容器名还是ip地址都是可以ping通的
docker学习(十)——自定义网络
我们自定义的网络docker已经帮我们维护好了对应的关系,推荐平时这样使用网络!

好出:
redis:不同的集群使用不同的网络,保证集群是安全和健康的
mysql:不同的集群使用不同的网络,保证集群是安全和健康的

网络连通

我们再次思考一个问题,如在默认bridge0网络中创建的容器是否可以与我们自定义中的容器连通?
我们继续测试:先清除之前的所有容器,然后分别在bridge0中和mynet中创建两个容器,如下:
docker学习(十)——自定义网络
测试发现结果是不行的,这也显然符合我们的预计,所以我们如何让两个在不同网络的容器互相通信呢,显然将两个网络的网卡直接打通也是不好的,不安全。结论就是需要将一个网络中的容器与另一个网卡之间可以通信:
docker学习(十)——自定义网络
查看帮助我们可以知道这样的操作如何完成
docker学习(十)——自定义网络
下面我们开始操作:
docker学习(十)——自定义网络
然后查看mynet详情
docker学习(十)——自定义网络
发现在mynet中多了一个tomcat01容器!
一个容器两个ip地址!