Docker中容器之间的通信

Docker中容器之间的通信

一、前言

容器之间是通过网络进行相互通信的

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

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

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

二、通信方式

1. IP通信

默认Docker在创建容器时将所有容器都连接到 docker0 网桥上,默认在 docker0 网桥的容器都可以使用容器内IP地址进行通信

2. 容器名通信

使用容器名进行容器通信时,必须使用自定义网桥,不能使用默认的 docker0 网桥

三、具体操作

1. 查看网络
docker network ls

docker中支持的网络类型:bridge、host、null

2. 创建自定义网桥
docker network create -d bridge(默认) 网络名称
3. 查看某一个网络细节
docker network inspect 网络名称
5. 删除网络
# 删除一个网络
docker network rm 网络名称
# 删除所有未被用到的网络
docker network prune
6. 运行多个容器在指定网络中
  • 启动之前明确指定容器使用哪个网络

    docker run -d --network 网络名称 ......
    
  • 启动容器之后将容器加入到某个容器中

    docker network connect 网络名称 容器ID|容器名称
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值