Initial commit with translated description
This commit is contained in:
349
SKILL.md
Normal file
349
SKILL.md
Normal file
@@ -0,0 +1,349 @@
|
|||||||
|
---
|
||||||
|
name: docker-essentials
|
||||||
|
description: "用于容器管理、镜像操作和调试的Docker基础命令和工作流。"
|
||||||
|
homepage: https://docs.docker.com/
|
||||||
|
metadata: {"clawdbot":{"emoji":"🐳","requires":{"bins":["docker"]}}}
|
||||||
|
---
|
||||||
|
|
||||||
|
# Docker Essentials
|
||||||
|
|
||||||
|
Essential Docker commands for container and image management.
|
||||||
|
|
||||||
|
## Container Lifecycle
|
||||||
|
|
||||||
|
### Running containers
|
||||||
|
```bash
|
||||||
|
# Run container from image
|
||||||
|
docker run nginx
|
||||||
|
|
||||||
|
# Run in background (detached)
|
||||||
|
docker run -d nginx
|
||||||
|
|
||||||
|
# Run with name
|
||||||
|
docker run --name my-nginx -d nginx
|
||||||
|
|
||||||
|
# Run with port mapping
|
||||||
|
docker run -p 8080:80 -d nginx
|
||||||
|
|
||||||
|
# Run with environment variables
|
||||||
|
docker run -e MY_VAR=value -d app
|
||||||
|
|
||||||
|
# Run with volume mount
|
||||||
|
docker run -v /host/path:/container/path -d app
|
||||||
|
|
||||||
|
# Run with auto-remove on exit
|
||||||
|
docker run --rm alpine echo "Hello"
|
||||||
|
|
||||||
|
# Interactive terminal
|
||||||
|
docker run -it ubuntu bash
|
||||||
|
```
|
||||||
|
|
||||||
|
### Managing containers
|
||||||
|
```bash
|
||||||
|
# List running containers
|
||||||
|
docker ps
|
||||||
|
|
||||||
|
# List all containers (including stopped)
|
||||||
|
docker ps -a
|
||||||
|
|
||||||
|
# Stop container
|
||||||
|
docker stop container_name
|
||||||
|
|
||||||
|
# Start stopped container
|
||||||
|
docker start container_name
|
||||||
|
|
||||||
|
# Restart container
|
||||||
|
docker restart container_name
|
||||||
|
|
||||||
|
# Remove container
|
||||||
|
docker rm container_name
|
||||||
|
|
||||||
|
# Force remove running container
|
||||||
|
docker rm -f container_name
|
||||||
|
|
||||||
|
# Remove all stopped containers
|
||||||
|
docker container prune
|
||||||
|
```
|
||||||
|
|
||||||
|
## Container Inspection & Debugging
|
||||||
|
|
||||||
|
### Viewing logs
|
||||||
|
```bash
|
||||||
|
# Show logs
|
||||||
|
docker logs container_name
|
||||||
|
|
||||||
|
# Follow logs (like tail -f)
|
||||||
|
docker logs -f container_name
|
||||||
|
|
||||||
|
# Last 100 lines
|
||||||
|
docker logs --tail 100 container_name
|
||||||
|
|
||||||
|
# Logs with timestamps
|
||||||
|
docker logs -t container_name
|
||||||
|
```
|
||||||
|
|
||||||
|
### Executing commands
|
||||||
|
```bash
|
||||||
|
# Execute command in running container
|
||||||
|
docker exec container_name ls -la
|
||||||
|
|
||||||
|
# Interactive shell
|
||||||
|
docker exec -it container_name bash
|
||||||
|
|
||||||
|
# Execute as specific user
|
||||||
|
docker exec -u root -it container_name bash
|
||||||
|
|
||||||
|
# Execute with environment variable
|
||||||
|
docker exec -e VAR=value container_name env
|
||||||
|
```
|
||||||
|
|
||||||
|
### Inspection
|
||||||
|
```bash
|
||||||
|
# Inspect container details
|
||||||
|
docker inspect container_name
|
||||||
|
|
||||||
|
# Get specific field (JSON path)
|
||||||
|
docker inspect -f '{{.NetworkSettings.IPAddress}}' container_name
|
||||||
|
|
||||||
|
# View container stats
|
||||||
|
docker stats
|
||||||
|
|
||||||
|
# View specific container stats
|
||||||
|
docker stats container_name
|
||||||
|
|
||||||
|
# View processes in container
|
||||||
|
docker top container_name
|
||||||
|
```
|
||||||
|
|
||||||
|
## Image Management
|
||||||
|
|
||||||
|
### Building images
|
||||||
|
```bash
|
||||||
|
# Build from Dockerfile
|
||||||
|
docker build -t myapp:1.0 .
|
||||||
|
|
||||||
|
# Build with custom Dockerfile
|
||||||
|
docker build -f Dockerfile.dev -t myapp:dev .
|
||||||
|
|
||||||
|
# Build with build args
|
||||||
|
docker build --build-arg VERSION=1.0 -t myapp .
|
||||||
|
|
||||||
|
# Build without cache
|
||||||
|
docker build --no-cache -t myapp .
|
||||||
|
```
|
||||||
|
|
||||||
|
### Managing images
|
||||||
|
```bash
|
||||||
|
# List images
|
||||||
|
docker images
|
||||||
|
|
||||||
|
# Pull image from registry
|
||||||
|
docker pull nginx:latest
|
||||||
|
|
||||||
|
# Tag image
|
||||||
|
docker tag myapp:1.0 myapp:latest
|
||||||
|
|
||||||
|
# Push to registry
|
||||||
|
docker push myrepo/myapp:1.0
|
||||||
|
|
||||||
|
# Remove image
|
||||||
|
docker rmi image_name
|
||||||
|
|
||||||
|
# Remove unused images
|
||||||
|
docker image prune
|
||||||
|
|
||||||
|
# Remove all unused images
|
||||||
|
docker image prune -a
|
||||||
|
```
|
||||||
|
|
||||||
|
## Docker Compose
|
||||||
|
|
||||||
|
### Basic operations
|
||||||
|
```bash
|
||||||
|
# Start services
|
||||||
|
docker-compose up
|
||||||
|
|
||||||
|
# Start in background
|
||||||
|
docker-compose up -d
|
||||||
|
|
||||||
|
# Stop services
|
||||||
|
docker-compose down
|
||||||
|
|
||||||
|
# Stop and remove volumes
|
||||||
|
docker-compose down -v
|
||||||
|
|
||||||
|
# View logs
|
||||||
|
docker-compose logs
|
||||||
|
|
||||||
|
# Follow logs for specific service
|
||||||
|
docker-compose logs -f web
|
||||||
|
|
||||||
|
# Scale service
|
||||||
|
docker-compose up -d --scale web=3
|
||||||
|
```
|
||||||
|
|
||||||
|
### Service management
|
||||||
|
```bash
|
||||||
|
# List services
|
||||||
|
docker-compose ps
|
||||||
|
|
||||||
|
# Execute command in service
|
||||||
|
docker-compose exec web bash
|
||||||
|
|
||||||
|
# Restart service
|
||||||
|
docker-compose restart web
|
||||||
|
|
||||||
|
# Rebuild service
|
||||||
|
docker-compose build web
|
||||||
|
|
||||||
|
# Rebuild and restart
|
||||||
|
docker-compose up -d --build
|
||||||
|
```
|
||||||
|
|
||||||
|
## Networking
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# List networks
|
||||||
|
docker network ls
|
||||||
|
|
||||||
|
# Create network
|
||||||
|
docker network create mynetwork
|
||||||
|
|
||||||
|
# Connect container to network
|
||||||
|
docker network connect mynetwork container_name
|
||||||
|
|
||||||
|
# Disconnect from network
|
||||||
|
docker network disconnect mynetwork container_name
|
||||||
|
|
||||||
|
# Inspect network
|
||||||
|
docker network inspect mynetwork
|
||||||
|
|
||||||
|
# Remove network
|
||||||
|
docker network rm mynetwork
|
||||||
|
```
|
||||||
|
|
||||||
|
## Volumes
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# List volumes
|
||||||
|
docker volume ls
|
||||||
|
|
||||||
|
# Create volume
|
||||||
|
docker volume create myvolume
|
||||||
|
|
||||||
|
# Inspect volume
|
||||||
|
docker volume inspect myvolume
|
||||||
|
|
||||||
|
# Remove volume
|
||||||
|
docker volume rm myvolume
|
||||||
|
|
||||||
|
# Remove unused volumes
|
||||||
|
docker volume prune
|
||||||
|
|
||||||
|
# Run with volume
|
||||||
|
docker run -v myvolume:/data -d app
|
||||||
|
```
|
||||||
|
|
||||||
|
## System Management
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# View disk usage
|
||||||
|
docker system df
|
||||||
|
|
||||||
|
# Clean up everything unused
|
||||||
|
docker system prune
|
||||||
|
|
||||||
|
# Clean up including unused images
|
||||||
|
docker system prune -a
|
||||||
|
|
||||||
|
# Clean up including volumes
|
||||||
|
docker system prune --volumes
|
||||||
|
|
||||||
|
# Show Docker info
|
||||||
|
docker info
|
||||||
|
|
||||||
|
# Show Docker version
|
||||||
|
docker version
|
||||||
|
```
|
||||||
|
|
||||||
|
## Common Workflows
|
||||||
|
|
||||||
|
**Development container:**
|
||||||
|
```bash
|
||||||
|
docker run -it --rm \
|
||||||
|
-v $(pwd):/app \
|
||||||
|
-w /app \
|
||||||
|
-p 3000:3000 \
|
||||||
|
node:18 \
|
||||||
|
npm run dev
|
||||||
|
```
|
||||||
|
|
||||||
|
**Database container:**
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name postgres \
|
||||||
|
-e POSTGRES_PASSWORD=secret \
|
||||||
|
-e POSTGRES_DB=mydb \
|
||||||
|
-v postgres-data:/var/lib/postgresql/data \
|
||||||
|
-p 5432:5432 \
|
||||||
|
postgres:15
|
||||||
|
```
|
||||||
|
|
||||||
|
**Quick debugging:**
|
||||||
|
```bash
|
||||||
|
# Shell into running container
|
||||||
|
docker exec -it container_name sh
|
||||||
|
|
||||||
|
# Copy file from container
|
||||||
|
docker cp container_name:/path/to/file ./local/path
|
||||||
|
|
||||||
|
# Copy file to container
|
||||||
|
docker cp ./local/file container_name:/path/in/container
|
||||||
|
```
|
||||||
|
|
||||||
|
**Multi-stage build:**
|
||||||
|
```dockerfile
|
||||||
|
# Dockerfile
|
||||||
|
FROM node:18 AS builder
|
||||||
|
WORKDIR /app
|
||||||
|
COPY package*.json ./
|
||||||
|
RUN npm install
|
||||||
|
COPY . .
|
||||||
|
RUN npm run build
|
||||||
|
|
||||||
|
FROM nginx:alpine
|
||||||
|
COPY --from=builder /app/dist /usr/share/nginx/html
|
||||||
|
```
|
||||||
|
|
||||||
|
## Useful Flags
|
||||||
|
|
||||||
|
**`docker run` flags:**
|
||||||
|
- `-d`: Detached mode (background)
|
||||||
|
- `-it`: Interactive terminal
|
||||||
|
- `-p`: Port mapping (host:container)
|
||||||
|
- `-v`: Volume mount
|
||||||
|
- `-e`: Environment variable
|
||||||
|
- `--name`: Container name
|
||||||
|
- `--rm`: Auto-remove on exit
|
||||||
|
- `--network`: Connect to network
|
||||||
|
|
||||||
|
**`docker exec` flags:**
|
||||||
|
- `-it`: Interactive terminal
|
||||||
|
- `-u`: User
|
||||||
|
- `-w`: Working directory
|
||||||
|
|
||||||
|
## Tips
|
||||||
|
|
||||||
|
- Use `.dockerignore` to exclude files from build context
|
||||||
|
- Combine `RUN` commands in Dockerfile to reduce layers
|
||||||
|
- Use multi-stage builds to reduce image size
|
||||||
|
- Always tag your images with versions
|
||||||
|
- Use `--rm` for one-off containers
|
||||||
|
- Use `docker-compose` for multi-container apps
|
||||||
|
- Clean up regularly with `docker system prune`
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
Official docs: https://docs.docker.com/
|
||||||
|
Dockerfile reference: https://docs.docker.com/engine/reference/builder/
|
||||||
|
Compose file reference: https://docs.docker.com/compose/compose-file/
|
||||||
6
_meta.json
Normal file
6
_meta.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"ownerId": "kn7anq2d7gcch060anc2j9cg89800dyv",
|
||||||
|
"slug": "docker-essentials",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"publishedAt": 1769692040015
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user