当前位置: 首页 > news >正文

剖析 Docker Swarm 操作对原有容器端口影响

剖析 Docker Swarm 操作对容器端口影响

一、背景阐述

在使用 Docker Swarm 构建集群环境过程中,于 ts3 节点出现了原有的容器端口全部失效,手动重启后才恢复的情况。期间涉及 docker swarm init --advertise-addr=172.16.10.110 以及 docker swarm join --token <MANAGER-TOKEN> <MANAGER-IP>:<MANAGER-PORT> 等操作,下面深入探究为何会出现端口失效及恢复的现象。

角色IPhostname
Manager1172.16.10.110ts3
Manager2172.16.10.111ts4
Worker1172.16.10.120harbor

image-20250408143729359

手动重启容器后才恢复的情况

image-20250408143240800

二、端口失效原因剖析

(一)网络配置变更因素

  1. 覆盖网络创建影响
    • 当执行 docker swarm initdocker swarm join 操作时,Docker 为保障 Swarm 集群内部高效通信,会创建新的覆盖网络(overlay network)。此网络构建过程涉及复杂的网络配置调整。
    • 例如,新覆盖网络的创建需要分配新的网络段、子网掩码等参数,这些参数的变更直接影响到节点的网络拓扑结构。原有的容器若依赖于之前的网络配置,如静态 IP 地址绑定、基于旧网络段的端口映射规则,在新覆盖网络生成后就会失效。
  2. iptables 规则动态调整
    • Docker 在 Swarm 操作期间会动态修改 iptables 规则。iptables 作为 Linux 系统下强大的防火墙工具,管控着网络流量的流入、流出以及端口转发等操作。
    • 比如,初始化 Swarm 时,为实现集群内服务间的负载均衡与通信隔离,Docker 会新增一系列允许或限制特定端口、IP 段流量的规则。这些新规则可能与原容器端口映射所依赖的 iptables 旧规则冲突,致使原容器端口无法正常对外提供服务,出现端口失效现象。

(二)服务发现与 DNS 变更因素

  1. 服务发现机制更新
    • Swarm 集群拥有自身一套完备的服务发现机制,旨在让集群内各个服务、容器能精准定位彼此。当节点执行 Swarm 相关操作时,这套服务发现机制会被重新配置。
    • 例如,原本容器依靠基于节点主机名或自定义服务名的发现规则来建立网络连接,在 Swarm 初始化或节点加入后,服务发现规则转变为基于 Swarm 内部生成的唯一服务 ID 或虚拟 IP 地址。容器若未及时适应这种变化,仍按旧规则寻找服务或端口,必然导致通信失败,端口映射看似失效。
  2. DNS 配置重新加载
    • 伴随 Swarm 操作,DNS 配置同步更新。在集群环境下,DNS 用于解析服务名、容器名等标识到对应的 IP 地址,确保网络通信顺畅。
    • 例如,新加入 Swarm 的节点可能会从管理节点获取全新的 DNS 服务器地址与解析策略。容器启动时依据的是旧 DNS 配置,运行过程中未能及时刷新 DNS 信息,那么在尝试通过域名访问其他服务时,就无法正确解析,使得依赖于域名解析的端口通信受阻,端口失效。

(三)资源重新分配因素

  1. IP 地址动态调配
    • 在 Swarm 集群搭建与节点加入过程中,IP 地址常常会被重新分配。这是为了满足集群统一管理、资源优化配置的需求。
    • 例如,原容器绑定了特定的 IP 地址,在节点加入 Swarm 后,根据集群的 IP 管理策略,该 IP 地址可能被回收并重新分配给其他服务或容器。此时,原容器基于旧 IP 地址的端口映射自然失效,若不重启容器获取新 IP 地址,端口将无法正常工作。
  2. 网络命名空间更迭
    • 每次 Swarm 操作都可能引发网络命名空间的更迭。网络命名空间是 Linux 系统中隔离网络资源的一种机制,不同的网络命名空间拥有独立的网络配置、路由表等。
    • 比如,新加入 Swarm 的节点会被分配新的网络命名空间,原容器所在的旧网络命名空间被关闭或修改。容器依赖旧网络命名空间内的网络连接与端口映射规则,在命名空间变更后,就如同进入一个全新且陌生的网络环境,端口失效在所难免。

三、总结

命名空间变更后,就如同进入一个全新且陌生的网络环境,端口失效在所难免。

三、总结

通过对上述各因素的详细剖析可知,docker swarm initdocker swarm join 操作绝非孤立地改变节点的某一特性,而是从网络配置、服务发现、DNS 以及资源分配等多维度重塑节点运行环境。这些深层次变革在带来集群强大功能与高效管理的同时,也不可避免地对原有的容器端口映射造成冲击,致使端口失效。唯有深入理解这些内在原理,才能在遭遇问题时精准施策,保障 Docker Swarm 集群稳定运行。

相关文章:

剖析 Docker Swarm 操作对原有容器端口影响

剖析 Docker Swarm 操作对容器端口影响 一、背景阐述 在使用 Docker Swarm 构建集群环境过程中&#xff0c;于 ts3 节点出现了原有的容器端口全部失效&#xff0c;手动重启后才恢复的情况。期间涉及 docker swarm init --advertise-addr172.16.10.110 以及 docker swarm join…...

QML面试笔记--UI设计篇02布局控件

1. QML 中常用的布局控件 1.1. Row1.2. Column1.3. Grid1.4. RowLayout1.5. ColumnLayout1.6. GridLayout1.7. 总结 1. QML 中常用的布局控件 1.1. Row 背景知识&#xff1a;Row 布局用于将子元素水平排列&#xff0c;适合简单的线性布局&#xff0c;如工具栏按钮或表单输入…...

Java全栈项目--校园快递管理与配送系统(4)

源代码续 /*** 通知工具类*/// 通知类型常量 export const NotificationType {SYSTEM: 1,EXPRESS: 2,ACTIVITY: 3 }// 通知类型名称映射 export const NotificationTypeNames {[NotificationType.SYSTEM]: 系统通知,[NotificationType.EXPRESS]: 快递通知,[NotificationType…...

c语言练习一

1、统计二进制数中1的个数 #include <stdio.h>int main(void) {int count 0; //统计1出现次数 int x 0b1011;while(x){count ;//x 0b1011 > x-1 0b1010 x-1,将x从右往左数遇到第一个1变成0&#xff0c;左边全部变为1&#xff0c;右边不变 //x&x-1 1010 …...

Scala安装

Spark安装 Spark的Local模式仅需要单个虚拟机节点即可&#xff0c;无需启动hadoop集群。实验步骤如下&#xff1a; 将spark的安装包上传到虚拟机node01中&#xff08;建议路径&#xff1a;/opt/software/spark&#xff09;并解压缩文件。将解压文件夹重命名为spark-local 解…...

爱普生RTC模块RA8804CE在ADAS域控制器的应用

在汽车智能化、自动化飞速发展的时代&#xff0c;ADAS&#xff08;高级驾驶辅助系统&#xff09;的多传感器融合与实时决策高度依赖精准的时间基准。毫秒级的时间偏差可能导致传感器数据错位&#xff0c;直接影响行车安全。爱普生RA8804CE实时时钟模块凭借其内置的32.768 kHz晶…...

开箱即用!推荐一款Python开源项目:DashGo,支持定制改造为测试平台!

大家好&#xff0c;我是狂师。 市面上的开源后台管理系统项目层出不穷&#xff0c;对应所使用到的技术栈也不尽相同。 今天给大家推荐一款开源后台管理系统: DashGo&#xff0c;不仅部署起来非常的简单&#xff0c;而且它是基于Python技术栈实现的&#xff0c;使得基于它进行…...

C++使用WebView2控件,通过IPC通信与Javascript交互

引言 在现代桌面应用程序开发中&#xff0c;Web技术与原生应用的融合变得越来越普遍。Microsoft的WebView2控件为C开发者提供了一个强大的工具&#xff0c;使他们能够在桌面应用中嵌入基于Chromium的Web浏览器引擎。本文将详细介绍如何在C应用程序中使用WebView2控件&#xff…...

算法中Hash备胎——LRU的设计与实现

核心内容1.理解LRU的原理2.理解LRU是如何实现的3.能够通过代码实现LRU 缓存是应用软件的必备功能之一&#xff0c;在操作系统、Java里的Spring、mybatis、redis、mysql等软件中都有自己的内部缓存模块&#xff0c;而缓存是如何实现的&#xff1f; 在操作系统教科书里我们知道…...

Profinet邂逅ModbusRTU:印刷厂有网关“一键打通”通信链路

Profinet邂逅ModbusRTU&#xff1a;印刷厂有网关“一键打通”通信链路 在现代化印刷厂的生产线上&#xff0c;高效稳定的设备通信是保障印刷质量和生产效率的关键。某印刷厂的印刷机控制系统采用了西门子PLC进行自动化控制&#xff0c;同时还有众多基于ModbusRTU协议的传感器和…...

Spring中使用Kafka的详细配置,以及如何集成 KRaft 模式的 Kafka

在 Spring 中使用 Apache Kafka 的配置主要涉及 Spring Boot Starter for Kafka&#xff0c;而开启 ‌KRaft 模式‌&#xff08;Kafka 的元数据管理新模式&#xff0c;替代 ZooKeeper&#xff09;需要特定的 Kafka Broker 配置。以下是详细步骤&#xff1a; 一、Spring 中集成 …...

C++之继承

本节我们将要学习C作为面向对象语言的三大特性之一的继承。 前言 一、继承的概念 二、继承的定义 2.1 定义格式 2.2 继承基类成员访问方式的变化 2.3 继承类模板 三、基类和派生类之间的转换 四、继承中的作用域 五、派生类的默认成员函数 六、实现一个不能被继承的类 七、继承…...

服务器申请 SSL 证书注意事项

一、确认证书类型 基础域名型&#xff08;DV&#xff09;&#xff1a;这类证书验证速度最快&#xff0c;通常只需验证域名所有权&#xff0c;几分钟到几小时即可颁发。适用于个人博客、小型企业展示网站等对安全性要求不是顶级严苛&#xff0c;且急需启用 HTTPS 的场景。但它仅…...

【资料分享】全志T536(异构多核ARMCortex-A55+玄铁E907 RISC-V)工业核心板说明书

核心板简介 创龙科技SOM-TLT536是一款基于全志科技T536MX-CEN2/T536MX-CXX四核ARM Cortex-A55 +...

博途 TIA Portal之1200做从站与调试助手的TCP通讯

其实&#xff0c;1200做从站与调试助手做TCP通讯很简单&#xff0c;只需要在组态时把“主动建立连接”放在对侧即可。但是我们还是要从头讲起&#xff0c;以方便没有基础的朋友能直接上手操作。 1、硬件准备 1200PLC一台&#xff0c;带调试助手的PC机一台&#xff0c;调试助手…...

移动端六大语言速记:第9部分 - 并发与多线程

移动端六大语言速记:第9部分 - 并发与多线程 本文将对比Java、Kotlin、Flutter(Dart)、Python、ArkTS和Swift这六种移动端开发语言在并发与多线程方面的特性,帮助开发者理解和掌握各语言的并发编程机制。 9. 并发与多线程 9.1 线程与进程 各语言线程与进程的创建和管理方…...

基于大模型的ALS预测与手术优化系统技术方案

目录 技术方案文档:基于大模型的ALS预测与手术优化系统1. 数据预处理与特征工程模块流程图伪代码2. 多模态融合预测模型模型架构图伪代码3. 术中实时监测与动态干预系统系统流程图伪代码4. 统计验证与可解释性模块验证流程图伪代码示例(SHAP分析)5. 健康教育与交互系统系统架…...

【Vue3知识】组件间通信的方式

组件间通信的方式 概述**1. 父子组件通信****父组件向子组件传递数据&#xff08;Props&#xff09;****子组件向父组件发送事件&#xff08;自定义事件&#xff09;** **2. 兄弟组件通信****通过父组件中转****使用全局状态管理&#xff08;如 Pinia 或 Vuex&#xff09;** **…...

【数据挖掘】岭回归(Ridge Regression)和线性回归(Linear Regression)对比实验

这是一个非常实用的 岭回归&#xff08;Ridge Regression&#xff09;和线性回归&#xff08;Linear Regression&#xff09;对比实验&#xff0c;使用了 scikit-learn 中的 California Housing 数据集 来预测房价。 &#x1f4e6; 第一步&#xff1a;导入必要的库 import num…...

RuntimeError: Error(s) in loading state_dict for ChartParser

一 bug错误 最近使用千问大模型有一个bug&#xff0c;报错信息如下 raise RuntimeError(Error(s) in loading state_dict for {}:\n\t{}.format( RuntimeError: Error(s) in loading state_dict for ChartParser:Unexpected key(s) in state_dict: "pretrained_model.em…...

汽车无钥匙启动125KHz低频发射天线工作原理

汽车智能钥匙低频天线是无钥匙进入&#xff08;PE&#xff09;及无钥匙启动&#xff08;PS&#xff09;系统的一部分&#xff0c;主要负责发送低频信号&#xff0c;探测智能钥匙与各低频天线间的相对位置&#xff0c;判断车内是否存在智能钥匙。 支持PEPS系统实现便捷操作 无…...

【Docker基础-镜像】--查阅笔记2

目录 Docker镜像概述base镜像镜像的分层结构镜像的理解镜像的构建docker commit 制作镜像DockerfileDockerfile 指令FROMLABELRUNARGENVADDCOPYWORKDIRUSERVOLUMEEXPOSECMD 和 ENTRYPOINT Docker镜像概述 镜像是Docker容器的基石&#xff0c;容器是镜像的运行实例&#xff0c;…...

LeetCode 第47题:旋转数组

LeetCode 第47题&#xff1a;旋转数组 题目描述 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例1&#xff1a; 输入&#xf…...

数据库管理工具实战:IDEA 与 DBeaver 连接 TDengine(二)

五、DBeaver 连接 TDengine 实战 5.1 安装 DBeaver 下载安装包&#xff1a;访问 DBeaver 官方网站&#xff08;https://dbeaver.io/download/ &#xff09;&#xff0c;根据你的操作系统选择合适的安装包。如果是 Windows 系统&#xff0c;下载.exe 格式的安装文件&#xff1…...

4S店汽车维修保养管理系统 (源码+lw+部署文档+讲解),源码可白嫖!

摘要 二十一世纪我们的社会进入了信息时代&#xff0c;信息管理系统的建立&#xff0c;大大提高了人们信息化水平。传统的管理方式已经与当今4S店汽车维修保养管理系统的业务需求不相适应,也与4S店汽车维修保养管理系统化建设的发展趋势不相适应。本文针对这一需求设计并实现了…...

【Mysql】主从复制部署(保姆级)

本次部署用到三台Ubuntu虚拟机&#xff08;一主两从&#xff09;&#xff1a; Master服务器&#xff1a;192.168.166.107 Slave1服务器&#xff1a;192.168.166.101 Slave2服务器&#xff1a;192.168.166.103 一、部署思路 首先我们要先捋清主从复制的部署思路…...

华为AR1200密码忘记

1、通过Console口连接设备并重启设备。在设备启动过程中&#xff0c;看到提示信息“Press CtrlB to break auto startup...”时&#xff0c;在三秒内按下CtrlB&#xff0c;输入BootLoader密码后&#xff0c;默认密码&#xff1a;Adminhuawei &#xff0c;进入BootLoader主菜单…...

高级java每日一道面试题-2025年3月26日-微服务篇[Nacos篇]-在Spring Cloud项目中如何集成Nacos?

如果有遗漏,评论区告诉我进行补充 面试官: 在Spring Cloud项目中如何集成Nacos&#xff1f; 我回答: 在Spring Cloud项目中集成Nacos&#xff0c;可以充分利用Nacos作为服务注册与发现中心以及配置管理中心的功能。以下是详细的步骤和说明&#xff0c;帮助你完成这一集成过程…...

YOLO-LLTS:低光照实时交通标志检测算法详解

论文地址:https://arxiv.org/pdf/2503.13883 目录 一、论文概述 1.1 研究背景 1.2 论文结构 二、核心创新点 2.1 CNTSSS数据集 2.2 HRFM-TOD模块 2.3 MFIA模块 2.4 PGFE模块 三、实验与结果 3.1 实验设置 3.2 性能对比 ​编辑3.3 消融实验 四、代码复现建议 4.…...

golang 性能优化分析工具 pprof

pprof简介 pprof 是 Go 语言标准库提供的一个强大的性能分析工具&#xff0c;它能帮助开发者深入了解程序的运行时行为&#xff0c;找出性能瓶颈&#xff0c;进而对代码进行优化。下面从多个方面对 pprof 进行详细介绍&#xff1a; 主要功能 CPU 性能分析&#xff1a;能够记…...

机器学习 Day09 线性回归

1.线性回归简介 线性回归知识讲解 定义与公式 定义&#xff1a;线性回归是利用回归方程&#xff08;函数&#xff09;对自变量&#xff08;特征值&#xff09;和因变量&#xff08;目标值&#xff09;之间关系进行建模的分析方式 。自变量只有一个时是单变量回归&#xff0c;…...

2025高频面试算法总结篇【字符串】

文章目录 直接刷题链接直达如何找出一个字符串中的最大不重复子串给定一个数&#xff0c;删除K位得到最大值字符串的排列至少有K个重复字符的最长子串 直接刷题链接直达 如何找出一个字符串中的最大不重复子串 滑动窗口 --> 滑动窗口直到最后一个元素&#xff0c;每当碰到重…...

JavaScript性能优化(上)

1. 减少 DOM 操作 减少 DOM 操作是优化 JavaScript 性能的重要方法&#xff0c;因为频繁的 DOM 操作会导致浏览器重绘和重排&#xff0c;从而影响性能。以下是一些具体的策略和技术&#xff0c;可以帮助有效减少 DOM 操作&#xff1a; 1.1. 批量更新 DOM 亲切与母体&#xff…...

数据结构与算法——链表OJ题详解(1)

文章目录 一、前言二、OJ题分享2.1移除链表元素——非val尾插法2.2反转链表2.2.1头插法2.2.2三指针法 2.3链表的中间结点——快慢指针法2.4合并两个有序链表2.4.1空链表法2.4.2非空链表法 2.5链表的回文结构2.5.1投机取巧数组法2.5.2反转链表法 三、总结 一、前言 前几天博主已…...

sedex认证2025年变化重点

近日&#xff0c;SEDEX突然宣布&#xff1a;2025年7月1日起&#xff0c;全通知审核正式退出历史舞台&#xff0c;取而代之的是至少3周窗口期的半通知突击审核。这场被业内称为“供应链透明化革命”的调整&#xff0c;或将重塑全球工厂合规生态。 三大变化划重点&#xff1a; 1…...

Scala课后总结(8)

集合计算高级函数 过滤&#xff08;filter&#xff09; 从集合里挑出符合特定条件元素组成新集合 。比如从整数集合里选出偶数&#xff0c; list.filter(x > x % 2 0) &#xff0c;就是筛选出能被2整除的元素。 转化/映射&#xff08;map&#xff09; 对集合每个元素应…...

老硬件也能运行的Win11 IoT LTSC (OEM)物联网版

#记录工作 Windows 11 IoT Enterprise LTSC 2024 属于物联网相关的版本。 Windows 11 IoT Enterprise 是为物联网设备和场景设计的操作系统版本。它通常针对特定的工业控制、智能设备等物联网应用进行了优化和定制&#xff0c;以满足这些领域对稳定性、安全性和长期支持的需求…...

蓝桥杯冲刺题单--二分

二分 知识点 二分&#xff1a; 1.序列二分&#xff1a;在序列中查找&#xff08;不怎么考&#xff0c;会比较难&#xff1f;&#xff09; 序列二分应用的序列必须是递增或递减&#xff0c;但可以非严格 只要r是mid-1&#xff0c;就对应mid&#xff08;lr1&#xff09;/2 2.答…...

计网 2025/4/8

CDMA? CRC循环冗余检验 PPP协议的帧格式 字节填充&#xff08;异步传输、7E->7D5E&#xff09;零比特填充&#xff08;同步传输、确保不会出现连续6个1&#xff09; CSMA/CD协议 多点接入载波监听碰撞检测 一些概念&#xff1a; 争用期 一些公式&#xff1a; 最短有效帧…...

java设计模式-工厂模式

工厂模式 简单工厂模式 请看类&#xff1a; org.xwb.springcloud.factory.simple.PizzaStore 1、简单工厂模式是属于创建型模式&#xff0c;是工厂模式的一种&#xff0c;简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实力。简单来工厂模式就是工厂模式家族中最简单最…...

2025年客运从业资格证备考刷题题库

题库中通常包含大量的题目&#xff0c;以全面覆盖考试的知识点。通过做大量的题目&#xff0c;考生可以熟悉各种考试题型和命题方式&#xff0c;提高答题的速度和准确性&#xff0c;同时也能发现自己在知识掌握上的薄弱环节&#xff0c;有针对性地进行复习和强化训练。 1、驾驶…...

Zephyr、FreeRTOS、RT-Thread 任务创建对比分析

一、任务模型与核心概念 特性ZephyrFreeRTOSRT-Thread任务术语线程&#xff08;Thread&#xff09;任务&#xff08;Task&#xff09;线程&#xff08;Thread&#xff09;执行单元线程&#xff08;单地址空间&#xff09;任务&#xff08;共享内存空间&#xff09;线程&#x…...

RK-realtime Linux

rk3562实时性数据:最大76us rk3568实时性数据:最大126us rk3588实时性数据:最大30us 注意事项 (1)RK3568 需要使用RT版本的BL31,实时性能更好 ​ a)rkbin需要更新到最新,且包含这个补丁:...

Ubuntu 22 Linux上部署DeepSeek+RAG知识库操作详解(Dify方式)之1

一、安装Docker 1. 更新你的包索引 首先&#xff0c;确保你的包列表是最新的。打开终端并运行以下命令&#xff1a; sudo apt update 2. 安装必要的依赖项 安装Docker之前&#xff0c;你需要安装一些必要的依赖项。运行以下命令来安装它们&#xff1a; sudo apt install apt…...

将飞帆制作的网页作为 div 集成到自己的网页中

并且自己的网页可以和飞帆中的控件相互调用函数。效果&#xff1a; 上链接 将飞帆制作的网页作为 div 集成到自己的网页中 - 文贝 进入可以复制、运行代码...

【C++游戏引擎开发】《几何算法》(3)AABB/OBB碰撞检测

一、AABB(轴对齐包围盒) 1.1 定义 ​最小点: m i n = ( x min , y min , z min ) \mathbf{min} = (x_{\text{min}}, y_{\text{min}}, z_{\text{min}}) min=(xmin​,ymin​,zmin​)​最大点: m a x = ( x max , y max , z max ) \mathbf{max} = (x_{\text{max}}, y_{\text{…...

基于人工智能的高中教育评价体系重构研究

基于人工智能的高中教育评价体系重构研究 一、引言 1.1 研究背景 在科技飞速发展的当下&#xff0c;人工智能技术已广泛渗透至各个领域&#xff0c;教育领域亦不例外。人工智能凭借其强大的数据处理能力、智能分析能力和个性化服务能力&#xff0c;为教育评价体系的创新与发…...

【C++游戏引擎开发】数学计算库GLM(线性代数)、CGAL(几何计算)的安装与使用指南

写在前面 两天都没手搓实现可用的凸包生成算法相关的代码&#xff0c;自觉无法手搓相关数学库&#xff0c;遂改为使用成熟数学库。 一、GLM库安装与介绍 1.1 vcpkg安装GLM 跨平台C包管理利器vcpkg完全指南 在PowerShell中执行命令&#xff1a; vcpkg install glm# 集成到系…...

Python 字典和集合(常见的映射方法)

本章内容的大纲如下&#xff1a; 常见的字典方法 如何处理查找不到的键 标准库中 dict 类型的变种set 和 frozenset 类型 散列表的工作原理 散列表带来的潜在影响&#xff08;什么样的数据类型可作为键、不可预知的 顺序&#xff0c;等等&#xff09; 常见的映射方法 映射类型…...

Qt 自带的QSqlDatabase 模块中使用的 SQLite 和 SQLite 官方提供的 C 语言版本(sqlite.org)对比

Qt 自带的 QSqlDatabase 模块中使用的 SQLite 和 SQLite 官方提供的 C 语言版本&#xff08;sqlite.org&#xff09;在核心功能上是相同的&#xff0c;但它们在集成方式、API 封装、功能支持以及版本更新上存在一些区别。以下是主要区别&#xff1a; 1. 核心 SQLite 引擎 Qt 的…...