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}}' <容器名>
- 小技巧:获取容器的 IP 地址:
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等所有你能想到的网络工具。这样你就不用在自己原本干净的容器里去安装这些排错工具了。