docker-expert
Comprehensive guide for Docker container management, compose configurations, volume management, networking, and troubleshooting. Use when the user asks about (1) creating or modifying Docker containers, (2) writing docker-compose.yml files, (3) managing volumes and data persistence, (4) Docker networking and port mapping, (5) container troubleshooting and logs, (6) migrating or reorganizing Docker data, (7) Windows-specific Docker configurations, or (8) any Docker-related questions.
❔ da accertare
⚪ mai vettata — nessuno l'ha ancora guardata; non vuol dire che sia a posto
C:\Users\Ettore\.openclaw\workspace-archimede\skills\docker-expert\SKILL.mdC:\Users\Ettore\.openclaw\workspace-archimede\skills\docker-expertname: docker-expert description: Comprehensive guide for Docker container management, compose configurations, volume management, networking, and troubleshooting. Use when the user asks about (1) creating or modifying Docker containers, (2) writing docker-compose.yml files, (3) managing volumes and data persistence, (4) Docker networking and port mapping, (5) container troubleshooting and logs, (6) migrating or reorganizing Docker data, (7) Windows-specific Docker configurations, or (8) any Docker-related questions.
Docker Expert Skill
Core Principles
Directory Organization (Windows)
Organize all Docker data under a single root directory for maintainability:
C:\Users\{username}\Docker\
├── {service-name}\
│ ├── data\ # Persistent data (databases, media, configs)
│ ├── config\ # Configuration files
│ └── logs\ # Log files (if not using Docker logging)Docker Compose Best Practices
Always use docker-compose.yml for multi-container setups. Structure:
version: "3.8"
services:
service-name:
image: image:tag
container_name: service-name
restart: unless-stopped
ports:
- "host:container"
volumes:
- ./data:/container/path
environment:
- VAR_NAME=value
networks:
- network-name
networks:
network-name:
driver: bridgeVolume Patterns
Named volumes (Docker-managed):
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:Bind mounts (host-managed, preferred for Windows):
volumes:
- C:/Users/Username/Docker/service/data:/container/path
# Or relative paths:
- ./data:/container/pathCommon Services Reference
| Service | Default Ports | Data Path | Config Notes |
|---|---|---|---|
| Jellyfin | 8096, 8920 | /config, /media | Mount media as read-only |
| n8n | 5678 | /home/node/.n8n | Needs N8N_BASIC_AUTH_* vars |
| Neo4j | 7474, 7687 | /data, /logs | Set NEO4J_AUTH |
| Minecraft | 25565 | /data | EULA=TRUE required |
| Portainer | 9000, 9443 | /data | For Docker management UI |
| Traefik | 80, 443, 8080 | /etc/traefik | Reverse proxy |
Windows-Specific Notes
- Path format: Use forward slashes or escaped backslashes in compose files
- ✅
C:/Users/Name/Docker/data - ✅
C:\\Users\\Name\\Docker\\data - ❌
C:\Users\Name\Docker\data
- WSL2 Backend: Recommended for better performance. Enable in Docker Desktop settings.
- File permissions: Windows volumes don't support Unix permissions; use
user:directive when needed - Line endings: Ensure .sh scripts use LF, not CRLF
Troubleshooting Commands
# View logs
docker logs -f container-name
# Shell into container
docker exec -it container-name /bin/bash
# Or for Alpine-based:
docker exec -it container-name /bin/sh
# Check resource usage
docker stats
# Inspect container
docker inspect container-name
# Network debugging
docker network ls
docker network inspect network-name
# Clean up
docker system prune -a # Remove all unused images
docker volume prune # Remove unused volumesMigration Workflow
When reorganizing Docker data:
- Stop containers:
docker-compose down - Create new directory structure
- Copy data (preserve permissions where possible)
- Update docker-compose.yml paths
- Start containers:
docker-compose up -d - Verify functionality
- Remove old directories only after confirmation
Health Checks
Add health checks for critical services:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40sEnvironment Variables
Use .env file for sensitive data:
# .env file (never commit to git)
DB_PASSWORD=secretpassword
API_KEY=your-api-keyReference in compose:
environment:
- DB_PASSWORD=${DB_PASSWORD}Backup Strategy
For critical data volumes:
# Backup a volume
docker run --rm -v volume-name:/source -v $(pwd):/backup alpine tar czf /backup/backup.tar.gz -C /source .
# Restore a volume
docker run --rm -v volume-name:/target -v $(pwd):/backup alpine tar xzf /backup/backup.tar.gz -C /targetAdditional Resources
- Compose examples: See
references/compose-examples.mdfor complete service configurations - Networking guide: See
references/networking.mdfor advanced network setups
Conteggio esatto dall'endpoint Anthropic count_tokens (gratuito, solo rate-limited), envelope del messaggio già sottratto. I caratteri sono un dato locale, servono da riscontro.
- references/compose-examples.md5.2 kB
- references/networking.md4.7 kB
- SKILL.md4.4 kB
nessuna modifica fatta da qui: nessun backup
questo workspace non è un repo git
Scrittura consentita solo dentro le cartelle skills\ dei workspace del registro e solo sul file SKILL.md (deroga alla stanza Identità autorizzata da Ettore il 2026-08-10). Ogni salvataggio crea prima un backup datato; nessun file viene mai cancellato.