docker 容器之间通信_「Docker」你对同一宿主机下Docker容器间通信还迷糊吗?

9676728993445fd500d228870fc59442.png

在我们的整个系统中,不可避免的需要在同一个主机上安装部署多个服务。那如果使用Docker部署,总是存在容器间通信的问题。

Docker的网路通信问题对于小白呢?总是会给你惊喜,别怕,跟着码哥做一遍,你会发现容器间通信So easy!

在安装好Docker后,Docker会创建一个Linux网桥docker0,Docker For Mac的实现和标准Docker规范有区别,Docker For Mac没有docker0。

可以使用Docker network ls 查看,docker 网络情况

c4bd0f15e7ca1294086a8847575b18a9.png

可以看到,Docker为我们创建了三个网络:bridge、host、none。

其中,网桥bridge模式是实际中常用的,也是容器启动时,默认的连接方式。我们可以通过 --network 参数 指定容器连接的网络。

场景一

以交互模式,启动两个容器busybox1、busybox2

# docker run -itd --name busybox1 busybox

# docker run -itd --name busybox2 busybox

两个容器启动后,检查网络bridge使用情况

# docker network inspect bridge

测试两个容器的互通情况,分别进入两个容器中

# docker attach container_id

# ping busybox1_ip

# ping busybox2_ip

结果证实,两个容器互通。

场景二

以 --link 参数形式,通过别名实现两个容器间的互通

# docker run -itd --name busybox3 busybox

# docker run -itd --link busybox3 --name busybox4 busybox

进入到busybox4容器中

# ping busybox3

查看下/etc/hosts文件,你会发现多了一条映射,就是它在起作用

场景三

自定义 bridge,实现容器间通信。

Docker 有一个内嵌的 DNS Server,可以实现容器间通过容器名通信。但是默认的bridge不可以。需要自定义一个bridge

# docker network create --driver bridge busybox_bridge

# docker run -itd --network busybox_bridge --name busybox5 busybox

# docker run -itd --network busybox_bridge --name busybox6 busybox

查看网络情况

# docker network inspect busybox_bridge

进入容器,测试容器间互通情况

# docker attach container_id

# ping busybox6

359eb5e38006eb81714dc1190a22af0d.png

查看/etc/hosts文件,你发现没有任何映射路由

查看/etc/resolv.conf,是的,是 dns 在起作用

9845683ca01f698bb5d0d6830c506a2e.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值