docker-helper

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Docker Helper

Docker 助手

Essential Docker and Docker Compose commands and patterns.
必备的Docker与Docker Compose命令及使用模式。

Container Operations

容器操作

bash
undefined
bash
undefined

Run container

Run container

docker run -d --name myapp -p 8080:80 nginx docker run -it --rm ubuntu bash # Interactive, auto-remove
docker run -d --name myapp -p 8080:80 nginx docker run -it --rm ubuntu bash # Interactive, auto-remove

With volume and env

With volume and env

docker run -d
-v $(pwd):/app
-e NODE_ENV=production
--name myapp
node:18 npm start
docker run -d
-v $(pwd):/app
-e NODE_ENV=production
--name myapp
node:18 npm start

List containers

List containers

docker ps # Running docker ps -a # All
docker ps # Running docker ps -a # All

Logs

Logs

docker logs myapp docker logs -f myapp # Follow docker logs --tail 100 myapp
docker logs myapp docker logs -f myapp # Follow docker logs --tail 100 myapp

Exec into container

Exec into container

docker exec -it myapp bash docker exec -it myapp sh # Alpine
docker exec -it myapp bash docker exec -it myapp sh # Alpine

Stop/remove

Stop/remove

docker stop myapp docker rm myapp docker rm -f myapp # Force
undefined
docker stop myapp docker rm myapp docker rm -f myapp # Force
undefined

Image Operations

镜像操作

bash
undefined
bash
undefined

Build

Build

docker build -t myapp:latest . docker build -t myapp:v1.0 -f Dockerfile.prod .
docker build -t myapp:latest . docker build -t myapp:v1.0 -f Dockerfile.prod .

List/remove

List/remove

docker images docker rmi myapp:latest docker image prune -a # Remove unused
docker images docker rmi myapp:latest docker image prune -a # Remove unused

Tag/push

Tag/push

docker tag myapp:latest registry.io/myapp:latest docker push registry.io/myapp:latest
undefined
docker tag myapp:latest registry.io/myapp:latest docker push registry.io/myapp:latest
undefined

Docker Compose

Docker Compose

bash
undefined
bash
undefined

Start services

Start services

docker compose up -d docker compose up -d --build # Rebuild
docker compose up -d docker compose up -d --build # Rebuild

Stop

Stop

docker compose down docker compose down -v # Remove volumes
docker compose down docker compose down -v # Remove volumes

Logs

Logs

docker compose logs -f docker compose logs -f web
docker compose logs -f docker compose logs -f web

Scale

Scale

docker compose up -d --scale web=3
docker compose up -d --scale web=3

Exec

Exec

docker compose exec web bash
undefined
docker compose exec web bash
undefined

Compose File Pattern

Compose 文件模板

yaml
undefined
yaml
undefined

docker-compose.yml

docker-compose.yml

services: web: build: . ports: - "3000:3000" volumes: - .:/app - /app/node_modules environment: - NODE_ENV=development depends_on: - db
db: image: postgres:15 volumes: - postgres_data:/var/lib/postgresql/data environment: POSTGRES_PASSWORD: secret
volumes: postgres_data:
undefined
services: web: build: . ports: - "3000:3000" volumes: - .:/app - /app/node_modules environment: - NODE_ENV=development depends_on: - db
db: image: postgres:15 volumes: - postgres_data:/var/lib/postgresql/data environment: POSTGRES_PASSWORD: secret
volumes: postgres_data:
undefined

Debugging

调试

bash
undefined
bash
undefined

Container inspection

Container inspection

docker inspect myapp docker inspect --format '{{.NetworkSettings.IPAddress}}' myapp
docker inspect myapp docker inspect --format '{{.NetworkSettings.IPAddress}}' myapp

Resource usage

Resource usage

docker stats docker stats myapp
docker stats docker stats myapp

Processes in container

Processes in container

docker top myapp
docker top myapp

Filesystem changes

Filesystem changes

docker diff myapp
docker diff myapp

Copy files

Copy files

docker cp myapp:/app/file.txt ./ docker cp ./file.txt myapp:/app/
undefined
docker cp myapp:/app/file.txt ./ docker cp ./file.txt myapp:/app/
undefined

Cleanup

清理

bash
undefined
bash
undefined

Remove stopped containers

Remove stopped containers

docker container prune
docker container prune

Remove unused images

Remove unused images

docker image prune -a
docker image prune -a

Remove unused volumes

Remove unused volumes

docker volume prune
docker volume prune

Remove everything unused

Remove everything unused

docker system prune -a --volumes
undefined
docker system prune -a --volumes
undefined

Dockerfile Best Practices

Dockerfile 最佳实践

dockerfile
undefined
dockerfile
undefined

Use specific tags

Use specific tags

FROM node:18-alpine
FROM node:18-alpine

Set working directory

Set working directory

WORKDIR /app
WORKDIR /app

Copy package files first (layer caching)

Copy package files first (layer caching)

COPY package*.json ./ RUN npm ci --only=production
COPY package*.json ./ RUN npm ci --only=production

Copy source

Copy source

COPY . .
COPY . .

Non-root user

Non-root user

RUN addgroup -g 1001 appgroup &&
adduser -S -u 1001 -G appgroup appuser USER appuser
RUN addgroup -g 1001 appgroup &&
adduser -S -u 1001 -G appgroup appuser USER appuser

Expose port

Expose port

EXPOSE 3000
EXPOSE 3000

Health check

Health check

HEALTHCHECK --interval=30s --timeout=3s
CMD wget -q --spider http://localhost:3000/health || exit 1
CMD ["node", "server.js"]
undefined
HEALTHCHECK --interval=30s --timeout=3s
CMD wget -q --spider http://localhost:3000/health || exit 1
CMD ["node", "server.js"]
undefined

Reference

参考资料

For multi-stage builds, networking, and optimization:
references/advanced.md
关于多阶段构建、网络配置及优化内容,请查看:
references/advanced.md