【详解】docker容器间的通信互联、以及相关命令

本文详细介绍了Docker中容器间的高级网络配置,重点讲解了使用网桥bridge实现容器间的双向通信。Docker在启动时创建docker0虚拟网桥,通过veth pair接口连接容器和主机,形成一个共享网络。通过`docker network`命令可以创建、挂载网桥,查看和删除网络。容器间通信可以通过容器名和端口进行,无需暴露宿主机端口。
摘要由CSDN通过智能技术生成

1.docker中容器间的高级网络配置

        为什么提供网络功能?

        docker允许通过外部访问容器或者容器互联的方式来提供网络服务。        

        本文主要讲的是docker中容器间的网络网桥bridge的双向通信。单向通信  --link的使用的很少了。如下图:

         过程原理:

        当docker启动的时,会自动在主机上创建一个docker0的虚拟网桥,实际上是Linux的虚拟网桥bridge,可以理解为一个软件的交换机。网桥会挂载到它得网口之间进行转发。

        同时docker随机分配一个本地未占用的私有网段中的一个地址docker0接口,比如典型的172.17.42.1,掩码为255.255.0.0。此后启动容器内的网口也会自动分配一个同一网段的地址172.17.0.0的地址。

        当创建一个docker容器的时候,同时会创建veth pair一对接口(当数据包发送到一个接口的时候,另外一个接口也可以收到相同的数据包)。这对接口一端在容器内,即eth0;另一端在本地并被挂载到docker网桥,名称以veth开头。通过这种方式,主机可以跟容器相互通信,容器之间也可以互相通信。这样docker就创建了在主机和所有网络之间一个虚拟共享网络。

        如下图,tomcat和redis服务以及宿主机之间通过网桥bridge相互通信。宿主机和tomcat、redis服务都挂载到同一个网桥上,组成一个虚拟共享网络。

 2、docker容器间网络互联通信、以及相关命令

①查看网桥配置信息

docker network ls 

 ②创建网桥

docker network create emp 

③挂载网桥

docker run -d -p 8089:8080 --name mysql --network 网桥名  镜像

 运行容器的时候直接使用 --network  网桥名  将容器挂载到网桥上,现在挂载了2个容器: 

 查看刚刚运行的容器,

使用curl  http://容器名:端口进行访问:

比如:首先得进入一个容器,curl  http://ptomcat2:8080访问另一个容器

注意:容器名是和容器的ip地址进行映射的;端口是容器内部的端口,不是宿主机的端口。

 ④显示网桥具体信息

docker  inspect 网桥名

 ⑤删除网桥

docker network rm 网桥

 OK,这样使用网桥bridge就实现了容器之间进行双向互联互通。

        

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值