#夏日挑战赛#云原生之Docker容器跨主机指定IP通信 原创 精华
mc_开发者
发布于 2022-7-17 00:44
浏览
4收藏
一、前言
1. 使用场景
对开发者而言,随着容器的普遍使用,开发者可以很方便的搭建项目的简易测试环境。有时候为了项目可以在任意机器一键运行,不用配置连接IP等信息。所以希望可以提前固定容器的IP地址,而且一个项目有时候涉及多个容器,可能还会部署在多台机器上。所以如果容器间可以固定IP跨机器通信的话,会有很大方便。
2. docker网络
- docker容器默认是一个有自己独立网络空间的虚拟系统。
- docker安装后自动创建3中网络:bridge、host、none。
- bridge:网桥模式,默认创建docker0网桥,172.17.0.0/16,宿主机可访问,外部机器不可见。
- host:共享宿主机网络模式,外部主机与容器直接通信,容器缺少了隔离性。
- none:禁用网络模式。
- docker自定义网络
docker提供了三种自定义网络驱动:bridge、overlay、macvlan。- bridge驱动类似默认的bridge网络模式
- overlay和macvlan是用于创建跨主机网络
- 支持自定义网段、网关,docker network create --subnet 172.77.0.0/24 --gateway 172.77.0.1 my_net
- docker创建容器使用默认docker0网络不支持自定义固定IP,都是动态的。
3. 自定义网络使用
- 自定义创建网段。
docker network create --subnet=172.18.0.0/16 spark-net
- 指定网络驱动
docker network create -d overlay --subnet 10.22.1.0/24 --gateway 10.22.1.1 spark-net-0
- 创建容器固定IP
二、实践操作
1. Overlay网络模式详解
- Overlay网络是目前比较主流的跨节点容器间数据传输和路由方案。
- Overlay网络模式在主机网络之上,在多个Docker主机之间实现分布式网络,允许跨容器之间的交互。
- Overlay网络是指在不改变现有网络基础设施的前提下,通过某种约定通信协议,把二层报文封装在IP报文之上的新的数据格式。
2. Consul服务发现
- Consul是一个分布式、高可用性和多数据中心感知工具,用于服务发现、配置和编排。Consul 支持大规模快速部署、配置和维护面向服务的架构。
- 部署单节点的consul服务(可选择公网服务器,或者能与其他部署容器通信的主机)
http://IP:8500/ui/#/dc1/kv/docker/nodes/
管理访问地址
3. 修改docker配置
4. 实践机器规划
本文实践创建了3台虚机:192.168.17.150 192.168.17.151 192.168.17.152
5. 创建overlay网络
- 选其中一台机器执行,例如在192.168.17.150执行
- 删除网络命令
- 注意
例如:在cloud1机器上,
可以执行docker network disconnect -f spark-net cloud2
但是执行docker network disconnect -f spark-net cloud1
就无效,必须跨机器执行断连
6. 跨主机创建容器验证
本文依赖上篇文章创建了3个容器, 可查看 Docker搭建大数据平台之Hadoop,Spark,Hive初探
192.168.17.150机器上执行
192.168.17.151机器上执行
192.168.17.152机器上执行
可分别在三个容器内互相ping IP10.22.1.26、10.22.1.27、10.22.1.28验证
三、常见问题
1. 如遇错误常用命令
- 如果网络改动,需要重启docker
- 关掉防火墙
2. 将容器以指定IP链接到自定义网络中
3. 将容器从自定义网络中删除
4. manager节点无法接入
docker.service配置 -H tcp://0.0.0.0:2376 --cluster-store=consul://121.4.138.199:8500 --cluster-advertise=ens33:2376 并不能正确执行,原理暂未知
©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
已于2022-7-17 00:46:08修改
赞
7
收藏 4
回复
7
7
4
相关推荐
写的非常棒
内容详实,学到了,感谢分享
谢谢,我会继续努力的
哈哈哈,我会继续分享
写的非常棒,
写的f c
感谢分享,写的不错