docker容器通信(7)

一、容器名称通信

容器之间除了使用ip通信外,还可以使用容器名称通信。

1.使用同一个自定义的网络模式,容器名称通信

  • docker 1.10开始,内嵌了一个DNS server
  • dns解析功能必须在自定义网络中使用
  • 启动容器时使用–name参数指定容器名称
    在这里插入图片描述

2.join容器

joined容器是一种较为特别的网络模式,在容器创建时使用–network=container:vm1指定。(vm1指定的是运行的容器名)
在这里插入图片描述
好处可以使用localhost通信:
在这里插入图片描述

3.link

link可以用来链接2个容器
–link的格式:

  • --link的格式:
  • --link <name or id>:alias
  • name和id是源容器的name和id,alias是源容器在Link下的别名
    在这里插入图片描述
    在这里插入图片描述
    link有两个作用:1.更新了host文件;2.更新了变量
    再来做个实验,将第一次运行的容器infallible_sanderson关闭,再次运行一个容器,随机名为youthful_jang,此时,新运行的容器ip是172.17.0.2,将infallible_sanderson再次开启,ip变为172.17.0.4,因为vm1的ip是3,所以youthful_jang的ip为4。
    在这里插入图片描述

二、 容器如访问外网

在这里插入图片描述端口映射,-p指定映射端口
在这里插入图片描述
在这里插入图片描述再创建一个容器,将宿主机的8080映射到容器的80端口。

在这里插入图片描述也可以通过浏览器访问:
在这里插入图片描述外网访问容器用到了docker-proxy和iptables DNAT。

  • 宿主机访问本机使用的是iptables DNAT
  • 外部主机访问容器或容器之间访问是docker-proxy实现。
    在这里插入图片描述

三、跨主机容器网络

跨主机网络解决方案

  • docker原生的overlay和macvlan
  • 第三方的flannel,weave,calico

众多网络方案是如何与docker集成在一起的

  • libnetwork docker容器网络库
  • CNM(container Network Model)这个模型对容器网络进行了抽象

CNM分三类组件

  • Sandbox:容器网络栈,包含容器接口,dns,路由表。(namespace)

  • Endpoint:作用是将sanbox接入network (veth pair)

  • Network:包含一组endpoint,同一network的endpoint可以通信
    在这里插入图片描述
    macvlan网络方案实现

  • Linux kernel 提供的一种网卡虚拟化技术。‘

  • 无需Linux bridge,直接使用物理接口,性能极好。
    在两台docker主机上各添加一块网卡,打开网卡混杂模式

1.准备好两台docker主机,两块网卡:
在这里插入图片描述
在这里插入图片描述2.打开网络混杂模式
第一次做的有错误:实际上没有打开
在这里插入图片描述在这里插入图片描述更正:
新添加的eth1网卡,需要启用。启用后再设置混杂模式开启。
node1和node2都首先开启一下网卡再开启混杂模式。
在这里插入图片描述
在这里插入图片描述

3.在两台主机上各创建macvlan网络:
在这里插入图片描述在这里插入图片描述4.在两台主机创建容器:
在这里插入图片描述在这里插入图片描述5.macvlan网络结构分析

  • 没有新建linux bridge,使用的是物理机的网卡通信
    在这里插入图片描述在这里插入图片描述容器的接口直接与主机网卡连接,无需NAT或端口映射

  • macvlan会独占主机网卡,但可以使用vlan子接口实现macvlan网络
  • vlan可以将物理二层网络划分为4094个逻辑网络,彼此隔离,vlan id取值为1~4094

创建网络:
在这里插入图片描述在这里插入图片描述运行容器:
在这里插入图片描述在这里插入图片描述macvlan网络间的隔离和连通

  • macvlan网络在二层上是隔离的,所以不同macvlan网络的容器是不能通信的。
  • 可以在三层上通过网关将macvlan网络连接起来。
  • docker本身不做任何限制,像传统vlan网络那样管理即可
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值