13.docker的网络模式-自定义网络

1. 为什么要使用自定义网络

前面默认的bridge模式,可以实现容器与宿主机,容器与容器之前的互通,但是容器一旦删除,它的ip就会变化,所以并不是很好用。为了解决这个问题,我们当时想了,如果能用容器名来访问就好了,那么自定义网络就能解决这个问题。

2. 创建自定义网络

我们先查看一下当前docker的网络信息:

docker network ls

在这里插入图片描述
创建一个自定义网络 net_1:

docker network create net_1

13.docker的网络模式-自定义网络_第1张图片
我们查看一下这个网络:

docker network inspect net_1

13.docker的网络模式-自定义网络_第2张图片
我们再看一下宿主机的网络信息:
13.docker的网络模式-自定义网络_第3张图片
我们看到,宿主机多了一个br-058adb395d8b,它和自定义的docker网络属于同一个网段,并且也是bridge模式。因为这里使用了bridge模式,所以容器与容器之间,容器与宿主机之间是可以连通的(注意:这是说的是同一个自定义网络容器,使用自定义网络或者使用不同自定义网络的容器之间的ip是无法ping通的)

3. 运行容器时使用自定义网络

创建使用自定义网络的容器t1

docker run -d -p 8091:8080  --network net_1 --name t1 f014789eac58

创建使用自定义网络的容器2

docker run -d -p 8092:8080  --network net_1 --name t2 f014789eac58

在这里插入图片描述
那我们试下容器之间使用容器名称是否能够ping通
t1 ping t2

docker exec -it t1 ping t2

13.docker的网络模式-自定义网络_第4张图片
t2 ping t1

docker exec -it t2 ping t1

13.docker的网络模式-自定义网络_第5张图片
惊喜吧,容器之前使用容器名称是可以ping通的哦。

4. 原理

我们已经使用自定义网络启动了两个容器,分别是t1和t2,那我们再查看一下自定义网络net_1的信息:

docker network inpect net_1

13.docker的网络模式-自定义网络_第6张图片
13.docker的网络模式-自定义网络_第7张图片
我们可以看到,在Containers下,自定义网络已经为我们维护好了容器间对应的关系,所以我们推荐使用自定义网络来处理容器之间的网络问题,这样保证保证不同的集群使用不同的网络,保证集群是安全和健康的。

5. 默认bridge和自定义网络容器怎么连通?

我们以默认docker0再创建两个容器,t3 和 t4:

docker run -d -p 8083:8080 --name t3 f014789eac58
docker run -d -p 8084:8080 --name t4 f014789eac58

13.docker的网络模式-自定义网络_第8张图片
首先我们试一下,t3能否用容器名ping通t2

docker exec -it t3 ping t2

在这里插入图片描述
果不其然,是ping不通的。那怎么才能ping通呢?
这里我们使用docker network connect来实现不通网络下的容器的连通。

docker network connect net_1 t3
docker network connect net_1 t4

我们再查看一下自定义网络:

docker network inspect net_1

13.docker的网络模式-自定义网络_第9张图片
13.docker的网络模式-自定义网络_第10张图片
我们惊奇的发现,Containers增加了t3和t4的网络配置,并且给他们增加了
172.18.0的网段,使得四个容器在一个网段呢。此时我们再试一下t3和t2是否能够ping通。

docker exec -it t3 ping t2

13.docker的网络模式-自定义网络_第11张图片

docker exec -it t2 ping t3

13.docker的网络模式-自定义网络_第12张图片
就问你牛不牛,竟然真的能互相ping通。我们再查看下容器t3的网络:

docker exec -it t3 ip addr

13.docker的网络模式-自定义网络_第13张图片
这个容器竟然又多个一个ip:172.18.0.4/16,一个容器,多个ip。

你可能感兴趣的:(Docker,docker自定义网络,容器的自定义网络,不同容器网络互通)