欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Docker网络

程序员文章站 2022-04-19 11:19:32
...

目录

Docker 0

自定义网络

网络连通 


 

Docker 0

 

不同容器之间是如何进行网络通信的? 

安装docker后会生成一个docker 0的网卡,我们每启动一个docker容器,docker就会给这个容器分配一个ip,此时docker容器内部获取网络会发现自己的ip,与此同时虚拟机上会多出来一张docker容器的网卡。每新建一个容器,都会成对出现一对儿网卡。

通信原理图如下 

Docker网络

只要容器一删除, 对应的一对儿网络便删除了。

 

 

 

 容器之间想通过容器名进行通信,需要用-link来绑定

$ docker exec -it tomcat02 ping tomca01   # ping不通
ping: tomca01: Name or service not known
# 运行一个tomcat03 --link tomcat02 
$ docker run -d -P --name tomcat03 --link tomcat02 tomcat
5f9331566980a9e92bc54681caaac14e9fc993f14ad13d98534026c08c0a9aef
# 用tomcat03 ping tomcat02 可以ping通
$ docker exec -it tomcat03 ping tomcat02
PING tomcat02 (172.17.0.3) 56(84) bytes of data.
64 bytes from tomcat02 (172.17.0.3): icmp_seq=1 ttl=64 time=0.115 ms
64 bytes from tomcat02 (172.17.0.3): icmp_seq=2 ttl=64 time=0.080 ms

# 用tomcat02 ping tomcat03 ping不通

link连接的实质

就是在hosts配置中添加映射

Docker网络

 

 

 自定义网络

 

-link支持容器间通信,但却不支持docker0使用容器名通信。 因此自定义网络就来了

 

网络模式

bridge :桥接 docker(默认,自己创建也是用bridge模式)

none :不配置网络,一般不用

host :和所主机共享网络

container :容器网络连通(用得少!局限很大)

 

创建容器指定网络模式 

# 我们直接启动的命令 --net bridge,而这个就是我们得docker0
# bridge就是docker0
$ docker run -d -P --name tomcat01 tomcat
等价于 => docker run -d -P --name tomcat01 --net bridge tomcat

# docker0,特点:默认,域名不能访问。 --link可以打通连接,但是很麻烦!
# 我们可以 自定义一个网络
$ docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

启动两个tomcat

Docker网络 

两个容器可以通过名字ping通 

Docker网络

 

自定义网络的优点 

使用不同的网络,保证集群是安全和健康的 

Docker网络

 

 

网络连通 

 

两个不同的网络,分别有3个集群。网络一中的1号容器想要和网络二中的2号容器通信,怎么搞?

使用网络连通===》network connect命令~ 

Docker网络 

相关标签: [Docker]