使用 Portainer API 控制 Docker 容器和堆栈,包括列出容器、启停/重启、查看日志以及从 Git重新部署堆栈。
」这个Portainer Skill ,“Docker 容器,我用我的百合板处理是一项面向实际任务的技能,主要用于” 这个Portainer Skill 让你通过Portainer的软件控制你的Docker 基础设施。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
╔═══════════════════════════════════════════════════════════╗
║ ║
║ 🐳 P O R T A I N E R C O N T R O L C L I 🐳 ║
║ ║
║ 通过 Portainer API 管理 Docker 容器 ║
║ 启动、停止、部署、重新部署 ║
║ ║
╚═══════════════════════════════════════════════════════════╝
“Docker 容器?我从我的睡莲叶上就能搞定。” 🐸
Portainer 技能 通过 Portainer 的 REST API,为您提供对 Docker 基础设施的完整控制能力——无需打开 Web UI,即可管理容器、堆栈(Stack)和部署任务。
功能特性:
| 项目 | 说明 |
|---|---|
| Portainer | 2.x 版本,且已启用 API 访问 |
| 依赖工具 | curl、jq |
| 认证方式 | API 访问令牌(Access Token) |
从 Portainer 获取 API Token:
配置凭证信息:
# 添加至 ~/.clawdbot/.env PORTAINER_URL=https://your-portainer-server:9443 PORTAINER_API_KEY=ptr_your_token_here
完成! 🚀
status — 检查 Portainer 服务端状态./portainer.sh status
输出示例:
Portainer v2.27.3
endpoints — 列出全部环境端点./portainer.sh endpoints
输出示例:
3: portainer (local) - ✓ online 4: production (remote) - ✓ online
containers — 列出容器# 在默认端点(ID=4)上列出容器 ./portainer.sh containers # 在指定端点(如 ID=3)上列出容器 ./portainer.sh containers 3
输出示例:
steinbergerraum-web-1 running Up 2 days cora-web-1 running Up 6 weeks minecraft running Up 6 weeks (healthy)
stacks — 列出全部堆栈(Stack)./portainer.sh stacks
输出示例:
25: steinbergerraum - ✓ active 33: cora - ✓ active 35: minecraft - ✓ active 4: pulse-website - ✗ inactive
stack-info — 查看堆栈详细信息./portainer.sh stack-info 25
输出示例(JSON 格式):
{
"Id": 25,
"Name": "steinbergerraum",
"Status": 1,
"EndpointId": 4,
"GitConfig": "https://github.com/user/repo",
"UpdateDate": "2026-01-25T08:44:56Z"
}
redeploy — 拉取更新并重新部署堆栈 🔄./portainer.sh redeploy 25
输出示例:
✓ Stack 'steinbergerraum' redeployed successfully
该操作将执行以下步骤:
start / stop / restart — 容器生命周期控制# 启动容器 ./portainer.sh start steinbergerraum-web-1 # 停止容器 ./portainer.sh stop steinbergerraum-web-1 # 重启容器 ./portainer.sh restart steinbergerraum-web-1 # 显式指定端点(默认为 4) ./portainer.sh restart steinbergerraum-web-1 4
输出示例:
✓ Container 'steinbergerraum-web-1' restarted
logs — 查看容器日志# 默认显示最后 100 行 ./portainer.sh logs steinbergerraum-web-1 # 显示最后 50 行,并指定端点 ID(4) ./portainer.sh logs steinbergerraum-web-1 4 50
# 合并 PR 后立即执行 ./portainer.sh redeploy 25 ./portainer.sh logs steinbergerraum-web-1 4 20
./portainer.sh containers ./portainer.sh logs cora-web-1 ./portainer.sh restart cora-web-1
./portainer.sh status ./portainer.sh endpoints ./portainer.sh containers ./portainer.sh stacks
问题原因: 堆栈重新部署时发生 Git 认证失败
解决方案: 堆栈需配置 repositoryGitCredentialID 参数。本脚本会自动从已有堆栈配置中读取该值,无需手动干预。
问题原因: 输入的容器名称不匹配
解决方案: 请使用 ./portainer.sh containers 输出中的**完整精确名称**:
steinbergerraum-web-1,而非 steinbergerraum问题原因: 凭证未正确配置
解决方案:
# 添加至 ~/.clawdbot/.env echo "PORTAINER_URL=https://your-server:9443" >> ~/.clawdbot/.env echo "PORTAINER_API_KEY=ptr_your_token" >> ~/.clawdbot/.env
"Redeploy the website" → ./portainer.sh redeploy 25 "Show me running containers" → ./portainer.sh containers "Restart the Minecraft server" → ./portainer.sh restart minecraft "What stacks do we have?" → ./portainer.sh stacks
| 版本号 | 日期 | 变更内容 |
|---|---|---|
| 1.0.0 | 2026-01-25 | 初始发布 |
@..@ (----) ( >__< ) "Containers are just fancy lily pads ^^ ^^ for your code to hop around!"
作者:Andy Steinberger(由他的 Clawdbot 青蛙 Owen 🐸 协助完成)
底层支持:Portainer API
所属项目:Clawdbot Skills Collection
为 Clawdbot 社区倾心打造 💚
Ribbit! 🐸