Docker学习:跨宿主机通信 | overlay和macvlay(理论+实战篇)

本文介绍了如何使用Docker的overlay和macvlan网络模式实现跨宿主机通信。通过修改daemon.json配置,创建overlay网络并启动容器,展示了在不同节点上容器的互通性。同时探讨了macvlan模式,强调了该模式的限制和应用场景。实验过程包括配置、网络创建、容器启动等步骤,揭示了两者在跨主机通信中的应用和优缺点。
摘要由CSDN通过智能技术生成

前言 

本讲是从Docker系列讲解课程,单独抽离出来的一个小节,带你一起 深入了解在编排工具出现前,跨宿主机通信的两大得力干将overlaymacvlay,这也会后期学好K8s做好基本功铺垫,打下一个坚实的基础。 

一、overlay

Overlay网络模式相比于桥接模式的特别之处在于,它可以自定多个--subnet子网网段,只有同一网络/段中的容器才可以相互交换信息(相互通信)。

需要注意的是如果设置了多个--subnet,也需要同步设定对应个数的--gateway网关,需要确保各子网网段不重叠。

如何查看容器的子网网段,docker insect contain_name即可,当然在docker run 容器时,也可以通过--subnet 指定子网网段 。

示例(了解范畴)

docker network create -d overlay\
--subnet 192.168.0.0./16\
--subnet 192.170.0.0./16\

--gateway = 192.168.0.100\
--gateway = 192.170.0.100\

--ip-range=192.168.1.0/24\

--aux-address="my-router=192.168.1.5" --aux-adress="my-switch=192.168.1.16" \
--aux-address="my-router=192.170.1.5" --aux-adress="my-switch=192.170.1.16" \
myoverlaynet

预告

通过对本知识点的学习,你将掌握,通过docker create 自定义网络-d自定义网络指定为overlay 网络模式,从而实现跨宿主机通信,同时可以了解一下consul镜像的使用。

注: Consul是一个分布式、高可用性和多数据中心感知工具,用于服务发现、配置和编排。Consul 支持大规模快速部署、配置和维护面向服务的架构。欲了解更多信息,请参阅 Consul架构指南

1.docker pull 拉取consul镜像,并运行容器

docker pull consul  #拉取镜像
docker images
docker run -d -p 8500:8500 --name consul consul:latest  #启动sonsul容器
netstat -nalpt  #查看端口占用情况

2.修改主/从节点的daemon.json,并重启docker和consul服务

1)修改主节点CentOS7.9

vim /etc/docker/daemon.json

注:在修改之前,你本地的这个文件可能只有一行,大概应该是仅配了(阿里)镜像加速。可参考如下配置,前两行可以不配置,使用默认的就可以。最后三行是要配的。 

{
"graph":"/var/lib/docker",
"storage-driver":"overlay",
"registry-mirrors": ["https://2jdmaxpc.mirror.aliyuncs.com"],
"cluster-store":"consul://192.168.31.100:8500",
"cluster-advertise":"192.168.31.100:2375",
"live-restore":true
}

注意:修改的时候,注意引号要是英文的除最后一行外,前面的每行尾部都有一个英文逗号否则docker服务将无法正常启动!!)。

首行的graph是配置docker数据(镜像、容器等)默认存储位置,可以据需修改,默认位置就是/var/lib/docker,(有人习惯修改为/data/docker)。
第二行的storage-driver,是驱动模式指定为overlay。
第三行是配置的阿里云镜像仓库地址
第四行cluster-store,是配置sonsul集群的访问地址
第五行cluster-advertise,是广播通信地址和端口。

"live-restore":true 和  –restart=always用法和意义各不相同。

配置前者的意义在于即使docker的daemon守护进程关闭,其里面的容器依然保持运行,后者是指容器在docker run 启动时,佩带了该参数,则在出现故障(内存泄露等)时,自动重启容器。

systemctl daemo
  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值