/install docker-ops
docker-ops
Manage Docker containers: status reports, log analysis, and restarts via docker-socket-proxy.
Prerequisites
dockerCLI available in PATHjqavailable in PATHDOCKER_HOSTenvironment variable is pre-configured (do NOT override it manually)whitelist.ymlin the agent workspace root
Whitelist
Before any Docker command, check the SYSCTL_WHITELIST_PATH environment variable.
If SYSCTL_WHITELIST_PATH is NOT set or empty:
- Do NOT run any Docker commands
- Reply: "⚠️
SYSCTL_WHITELIST_PATHis not configured. Set this environment variable in the container to point to the whitelist YAML file." - This applies to ALL requests without exception
If set, read the whitelist file from that path. There is no fallback file.
Structure:
containers:
- name: container_name
description: "Human description"
can_restart: true|false
Rules:
- NEVER run Docker commands against containers not in the whitelist
- NEVER restart containers where
can_restart: false - If a requested container is not in the whitelist, respond: "Container
\x3Cname>is not in the whitelist. Available: \x3Clist>"
Allowed Commands
You may ONLY use these Docker commands:
| Command | When |
|---|---|
docker ps --format json |
List running containers |
docker ps -a --format json |
List all containers (including stopped) |
docker inspect \x3Cname> |
Get container details (status, uptime, restart count) |
docker stats --no-stream --format json \x3Cname> |
Get resource usage (CPU, RAM, NET, BLOCK) |
docker logs --since \x3Cperiod> --tail 500 \x3Cname> |
Read container logs |
docker restart \x3Cname> |
Restart a container (explicit request only!) |
Forbidden Commands
NEVER execute: docker rm, docker stop, docker kill, docker exec, docker run, docker pull, docker build, docker push, docker network, docker volume, docker image, docker system, docker compose.
Report Procedure
When asked for a status report:
Step 1: Parse the period
Convert user text to --since parameter:
- "за последний час" / "last hour" →
1h - "за сегодня" / "today" →
24h - "за 30 минут" / "30 minutes" →
30m - "за неделю" / "last week" →
168h - No period specified → default
1h - Maximum:
168h(7 days). If user requests more — cap at 168h and inform them.
Step 2: Collect data
All docker commands must be wrapped with timeout 30 to prevent hanging.
# Status + uptime + restart count
timeout 30 docker inspect \x3Cname> | jq '.[0] | {Status: .State.Status, StartedAt: .State.StartedAt, RestartCount: .RestartCount, Health: .State.Health.Status}'
# Resource usage
timeout 30 docker stats --no-stream --format '{{json .}}' \x3Cname>
# Fetch logs once, then count errors and warnings locally
LOG_OUTPUT=$(timeout 30 docker logs --since \x3Cperiod> --tail 5000 \x3Cname> 2>&1)
# Error/warning count (quick stats)
echo "${LOG_OUTPUT}" | grep -ci 'error\|exception\|fatal\|traceback'
echo "${LOG_OUTPUT}" | grep -ci 'warn'
# Last errors (up to 10 unique)
echo "${LOG_OUTPUT}" | grep -i 'error\|exception\|fatal\|traceback' | sort -u | tail -10
Step 3: Sanitize output
Before displaying log fragments to users, mask sensitive patterns:
- Tokens, API keys, Bearer headers
- Database connection strings with credentials
- Passwords, secrets in environment variable dumps
Replace with [REDACTED] where detected.
Step 4: Format response
Use this template (adapt to language of request):
\x3Cstatus_emoji> **\x3Ccontainer_name>**
**Status:** `running` (uptime: 2d 5h 13m)
**Restarts:** 0
**CPU:** 2.3% | **RAM:** 145MiB / 512MiB (28%)
**NET I/O:** 1.2MB / 340KB | **BLOCK I/O:** 12MB / 5MB
**Logs at last hour:**
- 🔴 Errors: 3
- ⚠️ Warnings: 12
**Last errors:**
• `ConnectionRefusedError: connect to postgres:5432`
• `TimeoutError: request took >30s`
**Recommendation:** Check access to PostgreSQL
Status emoji rules:
- ✅ — running, 0 errors, low resource usage
- ⚠️ — running but has warnings/errors, or high resource usage (>80% CPU/RAM)
- 🔴 — stopped/restarting/exited, or critical errors
Restart Procedure
When asked to restart a container:
- Verify container is in whitelist AND
can_restart: true - Confirm the request is explicit (user said "restart", "перезапусти", "рестартни")
- Cooldown check: do not restart the same container more than once per 5 minutes. If repeated — warn and ask to confirm.
- Audit log: before executing, output:
[AUDIT] \x3CISO-timestamp> restart \x3Ccontainer_name> requested_by=\x3Cuser_id_if_available> - Execute:
timeout 30 docker restart \x3Cname> - Wait and verify with retries:
for i in 1 2 3; do sleep 10 STATUS=$(timeout 30 docker inspect \x3Cname> | jq -r '.[0].State.Status') if [ "${STATUS}" = "running" ]; then break; fi done - If running → report success with new status
- If not running after 30s → report failure with last 20 log lines:
timeout 30 docker logs --tail 20 \x3Cname> 2>&1
Log Viewing
When asked to show logs:
- Verify container is in whitelist
- Apply
--tail 500limit always - If user asks for filtered logs (errors only, etc.) — use
grep - For large output — summarize, don't dump raw
- Sanitize sensitive data before displaying (see Step 3 in Report Procedure)
Safety Notes
- NEVER pass user input directly into shell commands as container names — only use exact matches from whitelist
- Always use
2>&1when piping docker logs (stderr contains the actual logs) - If
DOCKER_HOSTis not set, do NOT guess the address — report to user: "DOCKER_HOST is not configured. Set this environment variable to point to the docker-socket-proxy endpoint." - If docker command fails with connection error — report to user that docker-socket-proxy may be down
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install docker-ops - 安装完成后,直接呼叫该 Skill 的名称或使用
/docker-ops触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Managing Docker containers via docker-socket-proxy 是什么?
Manage Docker containers securely via docker-socket-proxy: check status, logs, resource usage, and safely restart only whitelisted containers with cooldown. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 159 次。
如何安装 Managing Docker containers via docker-socket-proxy?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install docker-ops」即可一键安装,无需额外配置。
Managing Docker containers via docker-socket-proxy 是免费的吗?
是的,Managing Docker containers via docker-socket-proxy 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Managing Docker containers via docker-socket-proxy 支持哪些平台?
Managing Docker containers via docker-socket-proxy 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Managing Docker containers via docker-socket-proxy?
由 elston(@elston)开发并维护,当前版本 v0.4.0。