← 返回 Skills 市场
pratiknarola

Portainer Docker Control

作者 Pratik Narola · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
25
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install portainer-docker
功能描述
Control Docker containers and stacks via Portainer API. List containers, start/stop/restart, view logs, and redeploy stacks from git.
使用说明 (SKILL.md)

🐳 Portainer Skill

    ╔═══════════════════════════════════════════════════════════╗
    ║                                                           ║
    ║   🐳  P O R T A I N E R   C O N T R O L   C L I  🐳      ║
    ║                                                           ║
    ║       Manage Docker containers via Portainer API          ║
    ║            Start, stop, deploy, redeploy                  ║
    ║                                                           ║
    ╚═══════════════════════════════════════════════════════════╝

"Docker containers? I'll handle them from my lily pad." 🐸


📖 What Does This Skill Do?

The Portainer Skill gives you control over your Docker infrastructure through Portainer's REST API. Manage containers, stacks, and deployments without touching the web UI.

Features:

  • 📊 Status — Check Portainer server status
  • 🖥️ Endpoints — List all Docker environments
  • 📦 Containers — List, start, stop, restart containers
  • 📚 Stacks — List and manage Docker Compose stacks
  • 🔄 Redeploy — Pull from git and redeploy stacks
  • 📜 Logs — View container logs

⚙️ Requirements

What Details
Portainer Version 2.x with API access
Tools curl, jq
Auth API Access Token

Setup

  1. Get API Token from Portainer:

    • Log into Portainer web UI
    • Click username → My Account
    • Scroll to "Access tokens" → Add access token
    • Copy the token (you won't see it again!)
  2. Configure credentials:

    # Add to ~/.clawdbot/.env
    PORTAINER_URL=https://your-portainer-server:9443
    PORTAINER_API_KEY=ptr_your_token_here
    
  3. Ready! 🚀


🛠️ Commands

status — Check Portainer Server

./portainer.sh status

Output:

Portainer v2.27.3

endpoints — List Environments

./portainer.sh endpoints

Output:

3: portainer (local) - ✓ online
4: production (remote) - ✓ online

containers — List Containers

# List containers on default endpoint (4)
./portainer.sh containers

# List containers on specific endpoint
./portainer.sh containers 3

Output:

steinbergerraum-web-1    running    Up 2 days
cora-web-1               running    Up 6 weeks
minecraft                running    Up 6 weeks (healthy)

stacks — List All Stacks

./portainer.sh stacks

Output:

25: steinbergerraum - ✓ active
33: cora - ✓ active
35: minecraft - ✓ active
4: pulse-website - ✗ inactive

stack-info — Stack Details

./portainer.sh stack-info 25

Output:

{
  "Id": 25,
  "Name": "steinbergerraum",
  "Status": 1,
  "EndpointId": 4,
  "GitConfig": "https://github.com/user/repo",
  "UpdateDate": "2026-01-25T08:44:56Z"
}

redeploy — Pull & Redeploy Stack 🔄

./portainer.sh redeploy 25

Output:

✓ Stack 'steinbergerraum' redeployed successfully

This will:

  1. Pull latest code from git
  2. Rebuild containers if needed
  3. Restart the stack

start / stop / restart — Container Control

# Start a container
./portainer.sh start steinbergerraum-web-1

# Stop a container
./portainer.sh stop steinbergerraum-web-1

# Restart a container
./portainer.sh restart steinbergerraum-web-1

# Specify endpoint (default: 4)
./portainer.sh restart steinbergerraum-web-1 4

Output:

✓ Container 'steinbergerraum-web-1' restarted

logs — View Container Logs

# Last 100 lines (default)
./portainer.sh logs steinbergerraum-web-1

# Last 50 lines
./portainer.sh logs steinbergerraum-web-1 4 50

🎯 Example Workflows

🚀 "Deploy Website Update"

# After merging PR
./portainer.sh redeploy 25
./portainer.sh logs steinbergerraum-web-1 4 20

🔧 "Debug Container"

./portainer.sh containers
./portainer.sh logs cora-web-1
./portainer.sh restart cora-web-1

📊 "System Overview"

./portainer.sh status
./portainer.sh endpoints
./portainer.sh containers
./portainer.sh stacks

🔧 Troubleshooting

❌ "Authentication required / Repository not found"

Problem: Stack redeploy fails with git auth error

Solution: The stack needs repositoryGitCredentialID parameter. The script handles this automatically by reading from the existing stack config.


❌ "Container not found"

Problem: Container name doesn't match

Solution: Use exact name from ./portainer.sh containers:

  • Include the full name: steinbergerraum-web-1 not steinbergerraum
  • Names are case-sensitive

❌ "PORTAINER_URL and PORTAINER_API_KEY must be set"

Problem: Credentials not configured

Solution:

# Add to ~/.clawdbot/.env
echo "PORTAINER_URL=https://your-server:9443" >> ~/.clawdbot/.env
echo "PORTAINER_API_KEY=ptr_your_token" >> ~/.clawdbot/.env

🔗 Integration with Clawd

"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

📜 Changelog

Version Date Changes
1.0.0 2026-01-25 Initial release

🐸 Credits

  @..@
 (----)
( >__\x3C )   "Containers are just fancy lily pads
 ^^  ^^     for your code to hop around!"

Author: Andy Steinberger (with help from his Clawdbot Owen the Frog 🐸)
Powered by: Portainer API
Part of: Clawdbot Skills Collection


\x3Cdiv align="center">

Made with 💚 for the Clawdbot Community

Ribbit! 🐸

\x3C/div>

安全使用建议
Review before installing. Use this only with a least-privilege Portainer token, keep the token out of repos and logs, restrict file permissions on any env file, and avoid using it against production unless your agent requires explicit confirmation before stop, restart, or redeploy. The script should be changed to validate TLS certificates instead of using curl -k.
能力标签
requires-oauth-tokenrequires-sensitive-credentials
能力评估
Purpose & Capability
The capability is coherent with the stated purpose: it lists Portainer endpoints, containers, stacks, logs, and can start, stop, restart, and redeploy containers/stacks. Those are high-impact infrastructure actions, but they are disclosed.
Instruction Scope
Natural-language examples such as redeploying a website or restarting a server map directly to mutating production-style actions, and the skill does not require explicit confirmation or warn about downtime before stop/restart/redeploy operations.
Install Mechanism
Installation is simple and transparent, requiring curl, jq, PORTAINER_URL, and PORTAINER_API_KEY. There are no package installs or hidden install-time behaviors.
Credentials
The authority requested is broad Portainer/Docker control, including live service restarts and stack redeploys. That is proportionate for an admin tool but risky without clear environment scoping, dry-run guidance, or production safeguards.
Persistence & Privilege
The script reads a long-lived Portainer API key from ~/.clawdbot/.env or the environment and sends it with API requests. Multiple API calls use curl -k, disabling TLS certificate validation while transmitting that key.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install portainer-docker
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /portainer-docker 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
Initial release: Manage Docker containers and stacks via Portainer REST API
元数据
Slug portainer-docker
版本 1.0.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

Portainer Docker Control 是什么?

Control Docker containers and stacks via Portainer API. List containers, start/stop/restart, view logs, and redeploy stacks from git. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 25 次。

如何安装 Portainer Docker Control?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install portainer-docker」即可一键安装,无需额外配置。

Portainer Docker Control 是免费的吗?

是的,Portainer Docker Control 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Portainer Docker Control 支持哪些平台?

Portainer Docker Control 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Portainer Docker Control?

由 Pratik Narola(@pratiknarola)开发并维护,当前版本 v1.0.0。

💬 留言讨论