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

Docker实验5

实验五----Docker编排与部署本实验按1 个 manager 节点 2 个 worker 节点的标准流程进行。Docker Swarm 模式是 Docker Engine 内置的集群编排能力不需要额外安装单独的编排器**先把一台 Ubuntu 虚拟机装好 Docker再关机用 VMware 做两次完整克隆 **先关机在 VMware Workstation 里对这台原始虚拟机执行右键虚拟机选择Manage / 管理选择Clone / 克隆选择按当前状态克隆选择Full Clone / 完整克隆第一次命名为worker1再重复一次第二次命名为worker2VMware 官方文档说明克隆向导会帮你完成克隆流程克隆后的虚拟机会成为独立虚拟机并且拥有不同的 MAC 地址和 UUID。分别启动三台机器并改主机名把原机当作manager两台克隆机分别做worker1、worker2。进入每台 Ubuntu 后执行原机sudo hostnamectl set-hostname manager重命名需重启终端即可看到第一台克隆机sudo hostnamectl set-hostname worker1第二台克隆机sudo hostnamectl set-hostname worker2然后都执行exec bash hostname这样三台机器的终端提示名就会区分开后面做 Swarm 不会乱1. 配置主机映射在三台虚拟机上分别编辑/etc/hosts保证节点之间可以通过主机名互相访问。建议三台主机名分别设置为manager、worker1、worker2查看机器ipipa在三台机器上执行sudovim/etc/hosts添加如下内容# Docker Swarm 节点映射192.168.255.149 manager192.168.255.150 worker1192.168.255.151 worker2保存后分别测试连通性ping-c3managerping-c3worker1ping-c3worker2若能够正常解析并连通说明主机映射配置成功。Swarm 多节点实验要求各节点之间网络可达另外Swarm/overlay 网络涉及的关键端口至少包括2377/tcp、7946/tcpudp和4789/udp需要在实验环境中放通。(Docker Documentation)2. 配置 Docker API(三台机器都做)创建 systemd overridesudomkdir-p/etc/systemd/system/docker.service.d/sudovim/etc/systemd/system/docker.service.d/override.conf打开后写入这段[Service]ExecStartExecStart/usr/bin/dockerd--containerd/run/containerd/containerd.sock-Hfd://-Htcp://0.0.0.0:2375重载并重启sudosystemctl daemon-reloadsudosystemctl restartdockersudosystemctl statusdocker看 dockerd 启动参数ps-ef|grepdockerd应该出现-H tcp://0.0.0.0:2375验证 2375ss-lntp|grep23753. 拉取实验所需镜像Swarm 模式本身已经集成在 Docker Engine 中因此不需要单独拉取“Swarm 镜像”这里按实验内容实际需要拉取的是service 运行镜像和Portainer 镜像。(Docker Documentation)在 manager 节点docker1执行dockerpull nginx:latestdockerpull portainer/portainer-ce:ltsdockerpull portainer/agent:ltsdockerimages4. 初始化集群在 manager 节点执行 Swarm 初始化命令。官方文档说明docker swarm init会把当前节点切换到 Swarm 模式将其设置为 manager并默认监听2377端口同时生成 worker 和 manager 的加入令牌。(Docker Documentation)在 manager 节点(docker1)执行# 这里的ip是你docker1的IPdockerswarm init --advertise-addr192.168.255.149执行成功后终端会输出类似如下提示Swarm initialized: currentnode(...)is now a manager. Toadda worker to this swarm, run the following command:dockerswarmjoin--tokenSWMTKN-1-xxxxx192.168.100.10:2377!!注意看这一步结果给的token是什么下一步要用5. node 节点加入集群Swarm 初始化完成后在worker1和worker2上分别执行 manager 输出的docker swarm join命令。Docker 官方说明节点会根据你使用的 token 加入为 worker 或 manager。(Docker Documentation)在两个 worker 节点执行dockerswarmjoin--tokenSWMTKN-1-5sxzm7v9odf15jvfxbos0gq5u9lx325ee2lu51zuzavyf99rgh-0uloxandcdm0r78pp7ioxyrku192.168.255.149:2377两台 worker 都执行完成后说明节点已经成功加入集群。6. 验证集群回到 manager 节点使用以下命令查看集群状态dockernodelsdockerinfo|grep-iswarm如果配置正确应看到manager 节点角色为Leaderworker 节点状态为ReadySwarm: active7. 安装 PortainerDocker 的图形化管理工具Portainer 官方在 Swarm 环境下推荐通过Portainer Server Agent的 stack 方式部署。官方安装文档直接提供了portainer-agent-stack.yml使用docker stack deploy即可完成部署。(Portainer 文档)在 manager 节点执行sudoaptinstall-ycurlcd~curl-Lhttps://downloads.portainer.io/ce-lts/portainer-agent-stack.yml-oportainer-agent-stack.ymlls-lportainer-agent-stack.yml# 检查文件dockerstack deploy-cportainer-agent-stack.yml portainerdockerservicels如果要检查部署更细节还可以执行dockerstacklsdockerstack services portainerdockerstackpsportainer当看到portainer_portainer和portainer_agent相关服务正常运行时说明 Portainer 已部署成功8. 浏览器登录 PortainerPortainer 官方在 Swarm 安装说明中默认通过9443提供 Web 界面。部署成功后在宿主机浏览器或物理机浏览器访问 manager 节点(Portainer 文档)https://192.168.255.149:9443首次访问会要求创建管理员账号设置用户名与密码后进入 Portainer 控制台。设置速度要快不然超时系统会自锁。如果自锁在manager强制重启就行输入docker service update --force portainer_portainer我设置的密码是123456789zxy9. 运行 serviceSwarm 中最核心的对象是service。Docker 官方说明service 用来描述“希望运行多少个任务副本、使用什么镜像、开放哪些端口”等期望状态。(Docker Documentation)在 manager 节点运行一个 nginx servicedockerservicecreate--nameweb--replicas3-p8080:80 nginx:latest然后查看 service 和任务分布情况dockerservicelsdockerservicepsweb可以看到web服务已经创建副本数为3/3多个 task 被分配到不同节点运行10. service 的弹性伸缩Docker 官方提供docker service scale命令用于修改 service 的副本数Swarm 会自动把实际状态调整到你设定的期望状态。(Docker Documentation)将副本数从 3 扩展到 5在manager上执行dockerservicescaleweb5dockerservicelsdockerservicepsweb若成功可看到service 副本数变为5/5新任务自动分布到集群节点上如果要缩容也可以执行dockerservicescaleweb2dockerservicelsdockerservicepsweb11. 调度节点Swarm 支持使用节点标签和约束条件进行调度。Docker 官方说明可以先用docker node update --label-add给节点打标签再在docker service create或docker service update中使用--constraint限制 service 只能运行在满足条件的节点上。(Docker Documentation)全部 manager 节点执行为两个 worker 添加标签dockernodeupdate --label-addroleweb worker1dockernodeupdate --label-addroleweb worker2查看节点标签dockernodeinspect worker1--prettydockernodeinspect worker2--pretty然后更新 service只允许它运行在roleweb的节点上dockerserviceupdate --constraint-addnode.labels.rolewebwebdockerservicepsweb额外补充如果你还想让 manager 不再承载业务任务可以把 manager 设置为draindockernodeupdate--availabilitydrain managerdockernodels官方说明drain状态的节点不再接收新的任务调度。(Docker Documentation)12. 外部网络访问 serviceSwarm 的 routing mesh 允许所有节点接受对 service 已发布端口的访问请求即使该节点本地没有运行该 service 的 task也可以把流量转发给可用副本。Docker 官方文档明确说明Swarm 中所有节点都会参与 ingress routing mesh。(Docker Documentation)在浏览器中访问以下地址http://192.168.255.149:8080 http://192.168.255.150:8080 http://192.168.255.151:8080如果 service 正常运行就能打开 nginx 默认页面。这一步可以证明service 已成功发布端口routing mesh 已生效外部客户端可以通过任意节点访问 Swarm 服务 (Docker Documentation)

相关文章:

Docker实验5

实验五----Docker编排与部署 本实验按 1 个 manager 节点 2 个 worker 节点 的标准流程进行。Docker Swarm 模式是 Docker Engine 内置的集群编排能力,不需要额外安装单独的编排器 **先把一台 Ubuntu 虚拟机装好 Docker,再关机,用 VMware …...

嵌入式开发必知:如何通过.text、.data和.bss段优化内存使用(附实例分析)

嵌入式开发实战:从.text到.bss的内存优化策略与案例分析 在资源受限的嵌入式系统中,内存优化从来不是可选项,而是生存法则。当你的MCU只有几十KB RAM,而产品功能需求却在不断膨胀时,对内存分区的深入理解就成为了区分普…...

如何通过铜钟音乐重拾纯粹听歌的乐趣:一个零干扰的Web音乐解决方案

如何通过铜钟音乐重拾纯粹听歌的乐趣:一个零干扰的Web音乐解决方案 【免费下载链接】tonzhon-music 铜钟 (Tonzhon.com): 免费听歌; 没有直播, 社交, 广告, 干扰; 简洁纯粹, 资源丰富, 体验独特!(密码重置功能已回归) 项目地址: https://gitcode.com/G…...

通信与导航-技术博客网站上线了-正式

通信与导航-技术博客网站上线了 自2025年3月开始在微信公众号写通信与导航相关技术文章以来,至今已经过11个月。在公众号平台上,积累了相当数量的粉丝,获得了平台的流量推荐,还通过公众号结识了许多业内朋友,线下对接了…...

SEO_2024年最新SEO策略与趋势介绍(274 )

<h1 id"2024seo">2024年最新SEO策略与趋势介绍</h1> <p>在数字营销的大背景下&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;始终是提升网站流量和品牌知名度的关键因素。2024年&#xff0c;随着互联网技术的不断进步&#xff0c;SEO策略和…...

Hunyuan-MT-7B在文档翻译中的应用:一键部署,轻松处理多语言文档

Hunyuan-MT-7B在文档翻译中的应用&#xff1a;一键部署&#xff0c;轻松处理多语言文档 1. 为什么选择Hunyuan-MT-7B进行文档翻译 在全球化协作日益频繁的今天&#xff0c;企业和个人经常需要处理多语言文档。传统翻译方式要么成本高昂&#xff0c;要么质量参差不齐。Hunyuan…...

BilibiliDown开源工具全攻略:突破限制获取B站Hi-Res无损音频

BilibiliDown开源工具全攻略&#xff1a;突破限制获取B站Hi-Res无损音频 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mir…...

【第四周】论文精读:RAG4DMC:用于数据级模态补全的检索增强生成

前言&#xff1a;在多模态应用中&#xff0c;数据往往面临“模态缺失”的窘境&#xff08;如仅有图片无文字&#xff0c;或仅有文字无图片&#xff09;&#xff0c;这严重限制了模型的训练与应用。虽然预训练生成模型&#xff08;如 Diffusion、LLM&#xff09;看似是天然的解法…...

提示工程架构师成长必备:物流规划中的上下文评估方法

提示工程架构师成长必备&#xff1a;物流规划中的上下文评估方法 引言 背景介绍 在当今数字化和全球化的商业环境中&#xff0c;物流规划的重要性不言而喻。高效的物流规划能够显著降低企业成本、提高客户满意度&#xff0c;进而增强企业的市场竞争力。而随着人工智能技术的不断…...

OpenClaw成本优化:Qwen3.5-9B自部署接口降低token消耗实践

OpenClaw成本优化&#xff1a;Qwen3.5-9B自部署接口降低token消耗实践 1. 为什么需要关注OpenClaw的token消耗&#xff1f; 去年夏天&#xff0c;当我第一次用OpenClaw自动化处理月度报表时&#xff0c;收到了令人咋舌的账单——短短一周的自动化操作消耗了价值近200美元的AP…...

Python类与对象实战:从简历模板到动态方法绑定的完整指南

Python类与对象实战&#xff1a;从简历模板到动态方法绑定的完整指南 面向对象编程&#xff08;OOP&#xff09;是现代编程语言的核心范式之一&#xff0c;而Python作为一门多范式语言&#xff0c;其面向对象特性尤为强大且易于使用。本文将通过构建一个简历模板系统的完整案例…...

OpCore-Simplify:黑苹果EFI配置的认知负荷解决方案

OpCore-Simplify&#xff1a;黑苹果EFI配置的认知负荷解决方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 诊断认知负荷&#xff1a;黑苹果配置的…...

株洲品牌设计公司哪家更专业?

在株洲&#xff0c;无论是传统制造业寻求转型升级&#xff0c;还是新兴消费品牌意图破圈&#xff0c;一个专业、系统、能驱动增长的品牌设计&#xff0c;已成为企业赢得市场竞争的关键。然而&#xff0c;面对市场上众多的设计公司&#xff0c;许多企业主都会感到困惑&#xff1…...

APK Installer技术解析:Windows平台Android应用部署的创新架构

APK Installer技术解析&#xff1a;Windows平台Android应用部署的创新架构 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在传统Android开发与测试流程中&#xff0c;…...

浦语灵笔2.5-7B实战落地:3个行业客户在6个月内完成POC到上线

浦语灵笔2.5-7B实战落地&#xff1a;3个行业客户在6个月内完成POC到上线 1. 项目背景与价值 在当今AI技术快速发展的时代&#xff0c;多模态视觉语言模型正在成为企业智能化转型的重要工具。浦语灵笔2.5-7B作为上海人工智能实验室开发的多模态视觉语言大模型&#xff0c;凭借…...

如何通过OpCore-Simplify在30分钟内完成黑苹果EFI自动化配置

如何通过OpCore-Simplify在30分钟内完成黑苹果EFI自动化配置 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify OpCore-Simplify是一款专注于自动化OpenC…...

告别鼠标卡顿:Mac Mouse Fix实现第三方鼠标全栈优化,效率提升200%的实战指南

告别鼠标卡顿&#xff1a;Mac Mouse Fix实现第三方鼠标全栈优化&#xff0c;效率提升200%的实战指南 【免费下载链接】mac-mouse-fix Mac Mouse Fix - A simple way to make your mouse better. 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 问题溯…...

别再踩坑了!Vue3项目里用rtsp2web搞定大华相机直播流的保姆级配置

Vue3与大华相机RTSP流集成实战&#xff1a;从避坑到高稳定直播方案 大华相机的RTSP流在Vue3项目中集成时&#xff0c;开发者常会遇到跨域、解码失败、黑屏等问题。本文将深入剖析这些痛点&#xff0c;提供一套经过验证的高稳定性解决方案。 1. 环境准备与核心工具链 在开始集成…...

STM32开发必备:用CmBacktrace一键定位HardFault死机问题(附Keil配置指南)

STM32开发实战&#xff1a;用CmBacktrace精准捕获HardFault的终极指南 当你的STM32程序突然陷入HardFault死循环时&#xff0c;是否经历过这样的绝望时刻&#xff1f;仿真器连上又断开&#xff0c;寄存器值看了又看&#xff0c;函数调用栈却始终是个谜。今天&#xff0c;我将带…...

为什么92%的FastAPI AI服务仍在用阻塞式响应?(深度剖析async def vs sync def在LLM流式场景下的内存泄漏与协程死锁)

第一章&#xff1a;FastAPI 2.0异步AI流式响应的核心价值与演进脉络在大模型服务规模化部署的背景下&#xff0c;传统同步HTTP响应已难以满足低延迟、高吞吐、用户体验敏感的AI交互场景。FastAPI 2.0通过深度整合Python 3.11原生异步运行时、优化ASGI中间件栈及重构StreamingRe…...

相机响应函数(CRF)的奥秘:为什么你的OpenCV计算结果每次都不一样?

相机响应函数(CRF)的稳定性挑战&#xff1a;从原理到OpenCV实战优化 每次用同样的代码计算相机响应函数(CRF)&#xff0c;结果却总是不尽相同&#xff1f;这背后隐藏着从硬件特性到算法实现的复杂交互。本文将带您深入理解CRF的本质&#xff0c;剖析OpenCV实现中的关键变量&…...

企业文档管理中PDF格式的应用与优化

在现代企业运营中&#xff0c;文档管理是一项至关重要的工作。 无论是内部报告、合同文件、产品手册还是营销材料&#xff0c;都需要以规范、专业的方式进行保存和分享。 PDF格式因其不可随意编辑、跨设备显示一致的特性&#xff0c;成为企业文档管理的首选格式。 它能够确保文…...

三步搞定QQ空间历史说说备份:GetQzonehistory完整使用指南

三步搞定QQ空间历史说说备份&#xff1a;GetQzonehistory完整使用指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 还在担心QQ空间的珍贵回忆会丢失吗&#xff1f;GetQzonehistory是…...

墨语灵犀GPU算力适配指南:A10/A100/V100显卡部署性能与显存占用实测

墨语灵犀GPU算力适配指南&#xff1a;A10/A100/V100显卡部署性能与显存占用实测 1. 引言&#xff1a;当古典美学遇见现代算力 想象一下&#xff0c;你正在处理一份重要的海外文献&#xff0c;或者需要将一段优美的中文诗歌翻译成英文。你希望翻译结果不仅准确&#xff0c;更要…...

基于信息论的计算成像系统设计与优化

成像系统中的编码器&#xff08;光学系统&#xff09;将物体映射为无噪图像&#xff0c;噪声会将这些图像污染为测量值。我们的信息估计器仅利用这些含噪测量值和噪声模型&#xff0c;来量化测量值区分不同物体的能力。 作者&#xff1a;Henry Pinkard, Leyla Kabuli, Eric Mar…...

Wan2.1-UMT5开发环境搭建:Node.js后端服务与前端交互配置

Wan2.1-UMT5开发环境搭建&#xff1a;Node.js后端服务与前端交互配置 如果你正在折腾Wan2.1-UMT5的WebUI&#xff0c;想自己搞点后端服务&#xff0c;或者想扩展它的功能&#xff0c;比如加个状态查询、做个回调通知&#xff0c;那你来对地方了。很多朋友卡在环境配置这一步&a…...

复古玩法:OpenClaw+Qwen3.5-9B模拟操作Windows 98怀旧游戏

复古玩法&#xff1a;OpenClawQwen3.5-9B模拟操作Windows 98怀旧游戏 1. 为什么选择Windows 98游戏作为测试场景 最近在整理旧硬盘时&#xff0c;偶然发现了一批Windows 98时代的经典游戏安装包。这些20年前的老游戏不仅界面风格复古&#xff0c;操作方式也与现代软件大相径庭…...

VS2019报错找不到ucrtbased.dll?3种修复方法实测有效(附文件下载)

VS2019报错找不到ucrtbased.dll&#xff1f;3种修复方法实测有效&#xff08;附文件下载&#xff09; Visual Studio 2019是微软推出的强大集成开发环境&#xff0c;但在使用过程中&#xff0c;不少开发者会遇到"找不到ucrtbased.dll"的报错问题。这个错误通常发生在…...

保姆级教程:用Brainstorm搞定运动想象EEG分析,从时频图到分类器实战

保姆级教程&#xff1a;用Brainstorm搞定运动想象EEG分析&#xff0c;从时频图到分类器实战 运动想象脑电&#xff08;EEG&#xff09;分析是脑机接口&#xff08;BCI&#xff09;研究中的经典课题&#xff0c;也是许多研究生和初学者的第一个实战项目。但面对复杂的信号处理和…...

从协议战争到SDN革命:华为数通技术演进中的那些关键抉择

从协议战争到SDN革命&#xff1a;华为数通技术演进中的关键抉择 在数据中心网络架构的演进历程中&#xff0c;技术路线的选择往往决定着企业未来十年的竞争力格局。当传统网络架构遭遇云计算时代的流量洪流&#xff0c;一场关于协议标准与技术范式的深刻变革悄然展开。这场变革…...