Docker实用命令与调教指南

2026/06/302 分钟阅读728

这份速查表收录了日常开发中最常用、最能解决痛点、以及一些实用的 Docker / Docker Compose 命令。


1. 救命与日常清理(Mac 用户的痛点)

在 macOS 上,Docker 运行在一个虚拟机里,虚拟磁盘空间(Docker.raw)经常“只增不减”导致硬盘爆满。以下命令是你的“救命药”:

命令作用备注
docker system df查看 Docker 占用的磁盘空间看看是谁占了最多的空间(镜像、容器、卷还是缓存)
docker system prune清理未运行的容器、未使用的网络 and 悬挂镜像安全清理,不会影响正在运行的容器
docker system prune -a --volumes终极彻底清理:删除所有未运行容器、镜像和数据卷警告:会删除所有未使用的镜像 and 卷,慎用!
docker volume prune仅清理未挂载的孤儿数据卷很多时候数据库残留的数据卷非常占空间

2. 容器日常“调教”(最常用)

日常启动、停止、进入容器的操作:

快速启动与进入

  • 临时起个容器测试(用完即挂,不留垃圾)
    docker run --rm -it alpine sh
    # --rm 代表退出容器后自动销毁它,-it 代表交互式终端
  • 进入一个正在运行的容器(最常用)
    docker exec -it <容器名或ID> bash
    # 如果容器没有 bash,可以尝试 sh:
    docker exec -it <容器名或ID> sh

容器的生命周期

  • 查看容器
    docker ps      # 查看当前正在运行的容器
    docker ps -a   # 查看所有容器(包括已停止的)
    docker ps -q   # 仅输出正在运行的容器 ID(方便写脚本)
  • 快速停止所有正在运行的容器
    docker stop $(docker ps -q)
  • 快速删除所有已停止的容器
    docker rm $(docker ps -a -q)

3. 排错与监控三板斧

容器跑着跑着报错了,或者卡死了?用这三个命令排查:

实时日志

  • 实时追踪日志(类似 tail -f)
    docker logs -f <容器名或ID>
  • 看最后 100 行日志,并带上时间戳
    docker logs --tail 100 -t <容器名或ID>

资源监控

  • 查看容器 CPU、内存、网络、IO 占用(实时更新)
    docker stats

元数据检查

  • 查看容器的具体配置信息(IP地址、挂载目录、环境变量等)
    docker inspect <容器名或ID>
    • 小技巧:获取容器的 IP 地址
      docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <容器名>

4. 容器与宿主机“走私”数据

有时候你需要把本地的配置文件考进容器,或者把容器里的日志拿出来:

  • 从宿主机复制文件到容器
    docker cp /path/to/local/file.txt <容器名>:/app/file.txt
  • 从容器复制文件到宿主机
    docker cp <容器名>:/app/logs.log ./local-logs.log

5. Docker Compose 常用命令

你刚才运行的 docker compose up -d --build 是最经典的组合,以下是其他的常用搭档:

  • 后台启动并构建(最常用)
    docker compose up -d --build
  • 停止并删除容器、网络、卷、镜像(彻底关掉)
    docker compose down -v
    # -v 会把自动创建的卷也删掉,防止残留垃圾数据
  • 查看 compose 服务的日志
    docker compose logs -f [服务名]  # 如果不加服务名,则看所有服务的混合日志
  • 重启其中一个特定服务
    docker compose restart <服务名>
  • 查看 compose 运行状态
    docker compose ps

6. 高级小妙招:临时网络排查容器

如果你的容器之间连不上,想排查网络问题,你可以启动一个带有各种网络工具 of 临时容器,并让它共享目标容器的网络命名空间:

docker run --rm -it --network container:<目标容器名> nicolaka/netshoot
[!TIP] netshoot 是一个非常强大的网络诊断镜像,内置了 curl, nslookup, ping, tcpdump 等所有你能想到的网络工具。这样你就不用在自己原本干净的容器里去安装这些排错工具了。