Docker用法速查手册

Docker 命令速查手册


📦 镜像管理

命令 说明
docker images 列出所有镜像
docker pull <镜像名>:<标签> 拉取镜像
docker rmi <镜像ID> 删除镜像
docker image prune -f 清除所有 <none> 悬空镜像
docker image prune -a -f 清除所有未使用的镜像(⚠️ 慎用)
docker tag <源镜像> <新标签> 给镜像打标签
docker build -t <名称>:<标签> . 从 Dockerfile 构建镜像
docker save -o <文件名>.tar <镜像名> 导出镜像为 tar
docker load -i <文件名>.tar 从 tar 导入镜像
docker history <镜像名> 查看镜像构建历史

🚀 容器生命周期

命令 说明
docker run <镜像> 创建并启动容器
docker start <容器> 启动已停止的容器
docker stop <容器> 优雅停止容器
docker restart <容器> 重启容器
docker kill <容器> 强制杀死容器
docker rm <容器> 删除已停止的容器
docker rm -f <容器> 强制删除运行中的容器

🏃 docker run 常用参数

docker run \
  -d                          \  # 后台运行
  --name <名称>                \  # 容器命名
  -p <宿主端口>:<容器端口>      \  # 端口映射
  -v <宿主路径>:<容器路径>      \  # 目录挂载
  -e <变量名>=<值>             \  # 环境变量
  --network <网络名>           \  # 指定网络
  --restart unless-stopped     \  # 自动重启策略
  --rm                         \  # 停止后自动删除
  -it <镜像> /bin/bash            # 交互式进入
  <镜像名>:<标签>

restart 策略

说明
no 不自动重启(默认)
always 总是重启
unless-stopped 除非手动停止,否则重启
on-failure[:max] 非正常退出时重启

📋 容器查看

命令 说明
docker ps 查看运行中的容器
docker ps -a 查看所有容器(含已停止)
docker ps --no-trunc 显示完整命令
docker logs <容器> 查看日志
docker logs -f <容器> 实时跟踪日志
docker logs --tail 100 <容器> 最后 100 行日志
docker top <容器> 查看容器内进程
docker stats 实时资源占用(CPU/内存/网络)

🔍 容器详情(inspect)

命令 说明
docker inspect <容器> 查看所有详细信息(JSON)
docker inspect <容器> -f '{{json .HostConfig.Binds}}' 查看挂载目录
docker inspect <容器> -f '{{json .NetworkSettings.Ports}}' 查看端口映射
docker inspect <容器> -f '{{json .Config.Env}}' 查看环境变量
docker inspect <容器> -f '{{json .HostConfig.RestartPolicy}}' 查看重启策略
docker inspect <容器> -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 查看 IP 地址

💾 数据卷(Volume)

命令 说明
docker volume ls 列出所有卷
docker volume create <名称> 创建卷
docker volume inspect <名称> 查看卷详情
docker volume rm <名称> 删除卷
docker volume prune -f 清除未使用的卷

-v vs --mount

# -v 简写
docker run -v /host/path:/container/path <镜像>

# --mount 更明确
docker run --mount type=bind,source=/host/path,target=/container/path <镜像>
docker run --mount type=volume,source=myvol,target=/container/path <镜像>

🌐 网络管理

命令 说明
docker network ls 列出网络
docker network create <名称> 创建网络
docker network inspect <名称> 查看网络详情
docker network rm <名称> 删除网络
docker network prune -f 清除未使用的网络
docker network connect <网络> <容器> 容器加入网络
docker network disconnect <网络> <容器> 容器离开网络

🐙 Docker Compose

命令 说明
docker-compose up -d 后台启动所有服务
docker-compose down 停止并删除所有容器/网络
docker-compose down -v 同上,同时删除数据卷(⚠️ 慎用)
docker-compose restart <服务名> 重启某个服务
docker-compose logs -f <服务名> 跟踪某个服务日志
docker-compose ps 查看服务状态
docker-compose pull 拉取最新镜像
docker-compose build 重新构建镜像
docker-compose exec <服务名> /bin/sh 进入运行中的服务

docker-compose.yml 模板

version: "3.8"
services:
  app:
    image: nginx:latest
    container_name: my-app
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./data:/var/lib/data
      - app_config:/etc/config
    environment:
      - DB_HOST=db
      - DB_PORT=5432
    depends_on:
      - db
    restart: unless-stopped
    networks:
      - frontend

  db:
    image: postgres:15
    container_name: my-db
    volumes:
      - db_data:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=secret
    restart: unless-stopped
    networks:
      - frontend

volumes:
  app_config:
  db_data:

networks:
  frontend:

🧹 清理命令

命令 说明
docker system prune -f 一键清理:停止的容器 + 悬空镜像 + 未用网络 + 构建缓存
docker system prune -a -f 同上,额外删除所有未使用镜像(⚠️ 慎用)
docker system prune -a --volumes -f 全清,包括数据卷(⚠️⚠️ 危险)
docker system df 查看 Docker 磁盘占用
docker container prune -f 清除已停止的容器
docker image prune -f 清除悬空镜像
docker volume prune -f 清除未使用的数据卷
docker network prune -f 清除未使用的网络

🔧 实用技巧

进入运行中的容器

docker exec -it <容器> /bin/bash
# 如果没有 bash:
docker exec -it <容器> /bin/sh

容器间文件拷贝

# 容器 → 宿主机
docker cp <容器>:<容器路径> <宿主路径>

# 宿主机 → 容器
docker cp <宿主路径> <容器>:<容器路径>

查看容器资源占用

docker stats --no-stream  # 一次性输出,不持续刷新

导出/导入容器

docker export <容器> -o <文件名>.tar   # 导出容器为 tar
docker import <文件名>.tar <新镜像名>   # 导入为镜像

重命名容器

docker rename <旧名> <新名>

查看容器运行时的完整命令

docker ps --no-trunc --format "{{.Names}}: {{.Command}}"

⚡ 一行命令集合

# 删除所有已停止的容器
docker rm $(docker ps -aq --filter status=exited)

# 删除所有镜像
docker rmi $(docker images -q)

# 停止所有运行中的容器
docker stop $(docker ps -q)

# 删除所有容器(含运行中)
docker rm -f $(docker ps -aq)

# 查看所有容器 IP
docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

# 按大小排序镜像
docker images --format "{{.Repository}}:{{.Tag}} {{.Size}}" | sort -k2 -h

评论

评论功能即将上线,敬请期待。