Docker Swarm与Python-on-Whales:分布式容器集群管理教程
Docker Swarm与Python-on-Whales分布式容器集群管理教程【免费下载链接】python-on-whalesAn awesome Python wrapper for an awesome Docker CLI!项目地址: https://gitcode.com/gh_mirrors/py/python-on-whalesPython-on-Whales是一个强大的Docker CLI Python包装器它让Docker Swarm容器集群管理变得前所未有的简单。无论你是容器新手还是有经验的开发者这个工具都能帮助你轻松构建和管理分布式应用。Python-on-Whales标志Python与Docker容器在鲸鱼上和谐共处象征着轻松驾驭容器技术为什么选择Python-on-Whales管理Docker SwarmDocker Swarm提供了原生的容器编排能力但直接使用命令行工具管理集群可能会很繁琐。Python-on-Whales通过直观的API封装了Docker Swarm的所有功能让你可以用Python代码轻松控制整个集群。主要优势包括简洁的API用Python代码替代复杂的命令行指令类型安全完整的类型提示减少开发错误自动化友好轻松集成到CI/CD管道和自动化脚本全面覆盖支持Docker Swarm的所有核心功能快速开始安装与初始化首先通过以下命令安装Python-on-Whalespip install python-on-whales然后使用以下Python代码初始化一个Docker Swarm集群from python_on_whales import docker # 初始化Swarm管理器 docker.swarm.init(advertise_address192.168.1.100) # 获取工作节点加入令牌 worker_token docker.swarm.join_token(worker) print(fWorker join token: {worker_token})核心功能Swarm集群管理节点管理Python-on-Whales提供了简单的方法来管理Swarm集群中的节点# 获取所有节点 nodes docker.node.list() for node in nodes: print(fNode: {node.hostname}, Status: {node.status}) # 将节点设置为维护模式 docker.node.update(worker-1, availabilitydrain)服务部署部署服务变得异常简单无需编写复杂的YAML文件# 创建一个简单的Web服务 docker.service.create( nginx:alpine, nameweb-service, replicas3, publish[(8080, 80)], placement[{constraint: node.role worker}] ) # 扩展服务 docker.service.scale(web-service, 5)资源管理Docker Swarm支持通用资源分配Python-on-Whales让这一过程更加直观# 声明节点资源在daemon.json中配置 # { # node-generic-resources: [gpuUUID1, gpuUUID2] # } # 创建需要GPU资源的服务 docker.service.create( nvidia/cuda:11.0-base, namegpu-service, generic_resources[{kind: gpu, value: 1}] )高级操作Swarm配置与安全自动锁定与解锁增强Swarm集群安全性的关键功能# 启用自动锁定 docker.swarm.update(autolockTrue) # 获取解锁密钥妥善保存 unlock_key docker.swarm.unlock_key() print(fSwarm unlock key: {unlock_key}) # 解锁Swarm重启后需要 docker.swarm.unlock(unlock_key)证书轮换保持集群安全的重要措施# 轮换Swarm CA证书 docker.swarm.ca(rotateTrue) # 设置证书过期时间 from datetime import timedelta docker.swarm.update(cert_expirytimedelta(days30))实战案例部署多服务应用下面是一个完整的例子展示如何使用Python-on-Whales部署一个包含Web前端和数据库的多服务应用from python_on_whales import docker # 初始化Swarm如果尚未初始化 docker.swarm.init(advertise_address192.168.1.100) # 创建网络 docker.network.create(app-network, driveroverlay) # 部署数据库服务 docker.service.create( postgres:13, namedb, networks[app-network], environment[POSTGRES_PASSWORDsecret], mounts[db-data:/var/lib/postgresql/data], placement[{constraint: node.role manager}] ) # 部署Web服务 docker.service.create( my-web-app:latest, nameweb, networks[app-network], environment[DB_HOSTdb], publish[(80, 8080)], replicas3, update_config{parallelism: 1, delay: 10} ) # 检查服务状态 services docker.service.list() for service in services: print(fService: {service.name}, Replicas: {service.replicas})总结与下一步Python-on-Whales为Docker Swarm管理提供了强大而直观的Python接口极大简化了容器集群的创建、部署和维护过程。通过本文介绍的基础知识你已经可以开始构建自己的分布式应用了。要深入学习可以查阅以下资源官方文档docs/template/objects/services.mdSwarm功能源码python_on_whales/components/swarm/测试案例tests/python_on_whales/components/test_swarm.py现在就开始用Python-on-Whales来管理你的Docker Swarm集群体验容器编排的乐趣吧【免费下载链接】python-on-whalesAn awesome Python wrapper for an awesome Docker CLI!项目地址: https://gitcode.com/gh_mirrors/py/python-on-whales创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

jupyter-nodejs vs 其他Jupyter内核:为什么Node.js开发者不可错过这个工具?

jupyter-nodejs vs 其他Jupyter内核:为什么Node.js开发者不可错过这个工具?

jupyter-nodejs vs 其他Jupyter内核:为什么Node.js开发者不可错过这个工具? 【免费下载链接】jupyter-nodejs A node.js kernel for jupyter/ipython 项目地址: https://gitcode.com/gh_mirrors/ju/jupyter-nodejs Jupyter Notebook已成为数据科学…

2026/10/25 5:35:42 阅读更多 →
【技术笔记】AD25.8层次原理图输出PDF无法按照指定页面排序

【技术笔记】AD25.8层次原理图输出PDF无法按照指定页面排序

【技术笔记】Altium Designer25.8层次原理图无法按照指定页面排序输出PDF更多内容见专栏:【硬件设计遇到了不少问题】、【Cadence从原理图到PCB设计】 在使用 Altium Designer 25.8 进行层次原理图设计时,发现软件在导出 PDF 时,无法按照用户…

2026/10/26 16:19:20 阅读更多 →
Python游戏开发实战:从Pygame架构到射击游戏打包部署

Python游戏开发实战:从Pygame架构到射击游戏打包部署

1. 项目概述:为什么用Python做射击游戏?提起Python,很多人第一反应是数据分析、爬虫或者Web后端,游戏开发似乎总是C、C#的天下。但如果你是一个独立开发者、一个想快速验证创意的游戏设计爱好者,或者一个希望将编程学习…

2026/10/25 18:25:42 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/27 17:33:32 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/27 4:06:49 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/27 7:21:53 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/27 18:20:50 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/27 6:20:47 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/27 4:06:50 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 13:55:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 7:21:50 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 19:19:37 阅读更多 →