后浪云之Docker容器跨主机指定IP通信

​​想了解更多关于开源的内容,请访问:​​

​​ 开源基础软件社区​​

​​https://ost.​​

一、前言

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、自定义网络使用

  1. 自定义创建网段。docker network create –subnet=172.18.0.0/16 spark-net。
  2. 指定网络驱动docker network create -d overlay –subnet 10.22.1.0/24 –gateway 10.22.1.1 spark-net-0。
  3. 创建容器固定IP。
docker run --name cloud1 \
--net spark-net --ip172.18.0.2 \
-h cloud1 \
-it ubuntu
docker run --name cloud1_0 \
--network spark-net-0 --ip10.22.1.26 \
-h cloud1 \
-it ubuntu

二、实践操作

1、Overlay网络模式详解

  • Overlay网络是目前比较主流的跨节点容器间数据传输和路由方案。
  • Overlay网络模式在主机网络之上,在多个Docker主机之间实现分布式网络,允许跨容器之间的交互。
  • Overlay网络是指在不改变现有网络基础设施的前提下,通过某种约定通信协议,把二层报文封装在IP报文之上的新的数据格式。

2、Consul服务发现

  • Consul是一个分布式、高可用性和多数据中心感知工具,用于服务发现、配置和编排。Consul 支持大规模快速部署、配置和维护面向服务的架构。
  • 部署单节点的consul服务(可选择公网服务器,或者能与其他部署容器通信的主机)。
# 拉取镜像
docker pull progrium/consul
# 运行consul容器
docker run -d-p8500:8500 -h consul --name consul --restart=always progrium/consul -server-bootstrap
# -h:表示consul的主机名
# --name consul:表示为该容器名
# --restart=always表示可以随着docker服务的启动而启动;
# 运行consul容器,该服务的默认端口是8500;-p:表示将容器的8500端口映射到宿主机的8500端口
# -serve -bootstarp:表示当在群集中,加上这两个选项可以使其以master的身份出现
  • 管理访问地址
    http://IP:8500/ui/#/dc1/kv/docker/nodes/。

3、修改docker配置

# 所有需要通信的机器都需要修改
vim /etc/docker/daemon.json
# 增加 cluster-store、cluster-advertise两个参数
{
"registry-mirrors": ["https://xxxx.xxxx.aliyuncs.com","https://registry.docker-cn.com"],
"cluster-store": "consul://IP:8500",
"cluster-advertise": "ens33:2376"
}
# cluster-store,是配置sonsul集群的访问地址
# cluster-advertise,是广播通信地址和端口
# 重启docker
systemctl daemon-reload
systemctl restart docker
#如果有端口拒绝访问问题,可直接关掉防火墙
#停止firewall
systemctl stop firewalld.service
#禁止firewall开机启动
systemctl disable firewalld.service
#查看开放端口列表
firewall-cmd --list-ports

4、实践机器规划

本文实践创建了3台虚机:192.168.17.150 192.168.17.151 192.168.17.152。

5、创建overlay网络

  • 选其中一台机器执行,例如在192.168.17.150执行
# 创建overlay网络,并自定义制定网段以及网关
# 可以通过制定不同的网段,以隔离不同的服务
docker network create -d overlay --subnet10.22.1.0/24 --gateway10.22.1.1 spark-net
# 每台机器查看创建的网络
docker network ls
# 查看具体信息
docker network inspect spark-net
  • 删除网络命令
# 删除自定义网络
docker network rm spark-net
# 如果有已连接的,先断开连接
docker network disconnect -f net-spark con1
  • 注意
    例如:在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机器上执行。

docker run --name cloud1 \
-p50070:50070 \
-p8088:8088 \
-p8080:8080 \
-p7077:7077 \
-p9000:9000 \
-p16010:16010 \
--network net-spark --ip10.22.1.26 \
-h cloud1 \
--add-host cloud1:10.22.1.26 \
--add-host cloud2:10.22.1.27 \
--add-host cloud3:10.22.1.28 \
-it spark:v4

192.168.17.151机器上执行。

docker run --name cloud2  \
--network net-spark --ip10.22.1.27 \
-h cloud2 \
--add-host cloud1:10.22.1.26 \
--add-host cloud2:10.22.1.27 \
--add-host cloud3:10.22.1.28 \
-it spark:v4

192.168.17.152机器上执行。

docker run --name cloud3 \
--network net-spark --ip10.22.1.28 \
-h cloud3 \
--add-host cloud1:10.22.1.26 \
--add-host cloud2:10.22.1.27 \
--add-host cloud3:10.22.1.28 \
-it spark:v4

可分别在三个容器内互相ping IP10.22.1.26、10.22.1.27、10.22.1.28验证。

三、常见问题

1、如遇错误常用命令

  • 如果网络改动,需要重启docker
systemctl daemon-reload
systemctl restart docker
  • 关掉防火墙
# 停止firewall
systemctl stop firewalld.service
# 禁止firewall开机启动
systemctl disable firewalld.service
# 查看开放端口列表
firewall-cmd --list-ports
# 开放端口
firewall-cmd --zone=public --add-port=2379/tcp --permanent
# 重新载入
firewall-cmd --reload

2、将容器以指定IP链接到自定义网络中

#容器cloud3以IP10.22.1.28链接到overlay网络spark-net
docker network connect --ip10.22.1.28 spark-net cloud3

3、将容器从自定义网络中删除

# 注意不可在当前容器里执行断连
# 例如 需要断连容器cloud2,则需要在容器cloud1中执行如下命令
docker network disconnect -f spark-net cloud2

4、manager节点无法接入

docker.service配置 -H tcp://0.0.0.0:2376 –cluster-store=consul://121.4.138.199:8500 –cluster-advertise=ens33:2376 并不能正确执行,原理暂未知。

​​想了解更多关于开源的内容,请访问:​​

​​ 开源基础软件社区​​

​​https://ost.​​。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/281493.html<

(0)
运维的头像运维
上一篇2025-05-13 00:42
下一篇 2025-05-13 00:43

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注