| name | docker |
| version | v1.0.0 |
| last_updated | "2026-04-06T00:00:00.000Z" |
| description | Docker container management skill. Build, run, manage containers, images, networks, and volumes. Use for containerization, Docker Compose, multi-container apps, and DevOps tasks. |
Docker
Docker container management for building, running, and managing containers.
Activation Keywords
- docker
- container
- docker-compose
- docker compose
- containerization
- 容器
- 镜像
- docker build
- docker run
Tools Used
exec - Execute Docker CLI commands
read - Read Dockerfiles, compose files
write - Create Dockerfiles, compose files
edit - Modify Docker configurations
Workflow Decision Tree
User Request → Identify Task Type
├── Build Image → docker build workflow
├── Run Container → docker run workflow
├── Manage Containers → docker ps/stop/rm workflow
├── Compose Multi-Container → docker compose workflow
├── Network Management → docker network workflow
├── Volume Management → docker volume workflow
└── Debug Issues → docker logs/exec workflow
Core Commands Reference
Container Management
docker ps
docker ps -a
docker run -d --name <name> -p <host:container> <image>
docker run -d --name <name> -e KEY=VALUE <image>
docker run -d --name <name> -v /host/path:/container/path <image>
docker stop <container>
docker rm <container>
docker rm -f <container>
docker exec -it <container> <command>
docker logs <container>
docker logs -f <container>
docker logs --tail 100 <container>
Image Management
docker images
docker build -t <name>:<tag> <path>
docker build -t <name>:<tag> -f <dockerfile> <path>
docker pull <image>:<tag>
docker push <image>:<tag>
docker rmi <image>
docker image prune
docker tag <source> <target>
Docker Compose
docker compose up -d
docker compose down
docker compose logs
docker compose logs -f <service>
docker compose restart
docker compose build
docker compose exec <service> <command>
docker compose up -d --scale <service>=<count>
Network Management
docker network ls
docker network create <name>
docker network create -d bridge <name>
docker network connect <network> <container>
docker network disconnect <network> <container>
docker network rm <network>
Volume Management
docker volume ls
docker volume create <name>
docker volume rm <name>
docker volume prune
System Cleanup
docker system df
docker system prune
docker system prune -a --volumes
Common Patterns
Dockerfile Template
# Use official base image
FROM python:3.11-slim
# Set working directory
WORKDIR /app
# Install dependencies
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Copy application
COPY . .
# Set environment variables
ENV PYTHONUNBUFFERED=1
# Expose port
EXPOSE 8000
# Run command
CMD ["python", "main.py"]
Docker Compose Template
version: '3.8'
services:
app:
build: .
ports:
- "8000:8000"
environment:
- DATABASE_URL=postgres://user:pass@db:5432/dbname
volumes:
- ./data:/app/data
depends_on:
- db
db:
image: postgres:15
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=pass
- POSTGRES_DB=dbname
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
Best Practices
Dockerfile
- Use specific image tags - Avoid
latest in production
- Minimize layers - Combine RUN commands with
&&
- Use multi-stage builds - Reduce final image size
- Leverage build cache - Order commands from least to most frequent changes
- Use .dockerignore - Exclude unnecessary files
Security
- Don't run as root - Add
USER instruction
- Scan images - Use
docker scout or third-party tools
- Use secrets management - Don't hardcode credentials
- Limit resources - Use
--cpus, --memory
Performance
- Use alpine images - Smaller footprint
- Optimize COPY order - Leverage layer caching
- Use health checks - Add
HEALTHCHECK instruction
Troubleshooting
Common Issues
-
Container won't start
docker logs <container>
docker inspect <container> --format='{{.State.ExitCode}}'
-
Port already in use
lsof -i :<port>
docker run -p <different_port>:<container_port> <image>
-
Disk space issues
docker system df
docker system prune -a --volumes
-
Permission denied
docker run --user $(id -u):$(id -g) <image>
sudo chown -R $(id -u):$(id -g) /host/path
Examples
Run MySQL Container
docker run -d \
--name mysql \
-e MYSQL_ROOT_PASSWORD=rootpass \
-e MYSQL_DATABASE=mydb \
-p 3306:3306 \
-v mysql_data:/var/lib/mysql \
mysql:8.0
Run Redis Container
docker run -d \
--name redis \
-p 6379:6379 \
-v redis_data:/data \
redis:7-alpine
Run Nginx Reverse Proxy
docker run -d \
--name nginx \
-p 80:80 \
-p 443:443 \
-v ./nginx.conf:/etc/nginx/nginx.conf:ro \
-v ./ssl:/etc/nginx/ssl:ro \
nginx:alpine
Resources