WSL终端命令# 查看已安装的WSL发行版wsl--list--verbose# 关闭指定WSL发行版wsl--terminateUbuntu-24.04# 彻底关闭WSLwsl--shutdown# 设置默认登录用户避免每次 -u 指定ruofu是我的ID名字ubuntu config --default-user ruofu#进入终端wsl-dUbuntu-24.04-uruofu一. 运行容器1. 构建镜像命令#构建镜像 启动容器或修改了代码dockercompose up-d--build#仅构建镜像不启动容器。 强制丢弃所有缓存从头开始dockercompose build --no-cache#启动容器用已有镜像启动不构建镜像或未修改代码dockercompose up-dbuild: 构建镜像up: 构建 启动-d: 是 --detach 的缩写意思是后台运行分离模式。--no-cache: 只是一个修饰参数告诉 Docker “不要用之前的半成品全部重做”无缓存构建2. 停止和启动命令# 暂停容器不会关闭进程冻结dockercompose pause web# 恢复暂停的容器dockercompose unpause web# 只临时停止容器不删除后续可以直接重启dockercompose stopdockercompose start#停止 清理当前项目所有容器**web、worker、redis):dockercompose down#(删除这些容器、项目专属的网桥网络, 不会删除你构建好的镜像、数据卷下次 up 还能复用镜像)#只停止某一个服务dockercompose stop web#停止后直接删除单个容器dockercomposermweb3. 容器状态查看1看状态有没有活 确认启动成功:只显示当前目录下正在运行的容器: :docker compose ps或docker compose ps -a-a (all) 这个参数的意思是“显示所有容器”包括那些已经挂掉Exited的。二. 磁盘清理# 0. 查看 Docker 磁盘占用详情先诊断再清理dockersystemdf# **1. 停止并清理当前项目所有容器**dockercompose down# **2. 删除业务镜像**dockerrmi 镜像名 镜像名# 比如dockerrmi ai_rag_answer-web ai_rag_answer-worker# **3. 清理构建缓存释放磁盘**dockerimage prune-fdockerbuilder prune-f# **4. 删除挂载的数据卷会清空持久化数据谨慎用**dockercompose down-v# 5. 核弹级清理删除所有未使用的镜像、停止的容器、未使用的网络、构建缓存dockersystem prune-a-f# 6. 在上述基础上连数据卷一起删⚠️ 极度危险dockersystem prune-a--volumes-f# 7.删除未被任何容器使用的孤立数据卷谨慎会删无主持久化数据dockervolume prune-f# 8.删除无用网桥网络dockernetwork prune-f三. 日志查看排错核心1. 实时跟踪日志# 查看所有服务日志dockercompose logs-f# 只看 web 服务最近 200 行并持续跟踪dockercompose logs-f--tail200web# 查看它们为什么“罢工dockercompose logs web worker# 或者实时的报错流dockercompose logs-fweb worker#(web 和 worker 是我的两个容器名字)2. 查看指定时间段/错误段的日志#指定时间段dockercompose logs--since2026-06-23T10:00:00web#筛选出所有包含 error 关键字的行。dockercompose logs web|greperror四. 容器调试与交互当服务启动失败或需要进入容器内部排查问题时必用。1. 进入运行中的容器终端:# 以 root 用户进入 web 服务的 bash/shelldockercomposeexec-uroot web /bin/bash# 如果容器内没有 bash尝试 shdockercomposeexecwebsh# 交互式进入容器常用bashdockercomposeexec-itwebbash# 如果容器里只有sh没有bashdockercomposeexec-itworkersh# 普通docker原生进入方式不用compose时dockerexec-it容器IDbash# 以root用户进入容器容器内权限不足时用dockercomposeexec-uroot-itwebbash⚠️ 注意这里用exec而不是run。exec是进入已存在的容器run会创建一个全新的临时容器。2. 在容器中执行单条命令不进入交互模式:# 例如查看容器内的环境变量dockercomposeexecwebenv# 例如在容器内运行 Django/Flask 迁移dockercomposeexecweb python manage.py migrate3. 一次性临时容器用于测试/脚本:# 启动一个临时的 web 服务容器跑完命令就销毁dockercompose run--rmweb python manage.py shell五. 状态检查与健康诊断docker compose ps和docker compose ps -a查看当前项目所有容器状态端口映射、运行时长docker compose top查看容器内进程及资源占用docker inspect 容器名查看容器完整元数据挂载点、网络IP、环境变量等docker compose config验证docker-compose.yml语法并展开最终配置排错神器六. 重新构建镜像1. 什么时候才需要彻底重来重新构建镜像只有当你动了以下东西时才需要漫长的等待1修改了requirements.txt 加了新库或改了版本号Docker 需要重新跑 pip install。2修改了Dockerfile本身 比如换了基础镜像或者改了系统配置。3执行了强制清理命令 比如docker compose build --no-cache这会强制丢弃所有缓存从头开始。4修改了系统级配置 如更换基础镜像、安装新系统包、设置环境变量ENV5没有挂载代码卷 代码被 COPY 进了镜像容器内是副本外部修改不可见.以下情况不需要重新构建镜像1修改docker-compose.yml文件不需要重新构建镜像Build但必须重启容器2你的 docker-compose.yml 中配置了代码目录挂载Volumevolumes:-./src:/app/src# 宿主机代码直接映射进容器— 修改业务代码Python/JS/Go 等源码、模板、静态资源不需要重建。文件变更会实时同步到容器内重启服务或等待热重载即可。— 修改配置文件如 .env、Nginx 配置不需要重建但通常需要 docker compose restart web 使配置生效。 这就是开发环境推荐挂载代码的原因改完即生效无需漫长等待。2. 如何重新镜像1先清理旧环境#清理孤儿容器安全dockercompose down --remove-orphans#只想重建环境安全dockercompose down--rmiall#想连数据一起销毁危险慎用dockercompose down--rmiall-v--remove-orphans: 会清除那些在 docker-compose.yml 中已被移除但仍在运行的残留容器。down 停止并删除所有正在运行的容器。--rmi all删除由docker compose build构建出的镜像但它不会删除基础镜像如 python:3.11也不会删除构建缓存l除非加 --no-cache不会删除任何数据卷volume-v 删除 Docker 自己创建的卷volume不删你宿主机上的文件bind mount。删除docker-compose.yml中写的dbdata卷Type 是 volume) 不删除./data绑定挂载Type 是 bind,不删除外部卷external: true即使声明在 volumes: 中。安全做法只删镜像保留数据除非你的数据脏了或者你不想要数据了。2然后再从零开始(两种方式)2.1 构建启动docker compose up --build -d2.2无缓存构建推荐docker compose build --no-cache然后启动 :docker compose up -d3。磁盘清理频繁重建会产生大量悬空镜像定期执行# 清理构建缓存释放磁盘dockerimage prune-fdockerbuilder prune-f更多命令参考《二.磁盘清理》七. 文件拷贝宿主机 ↔ 容器不需要重建镜像就能更新配置文件或提取产物。# 从容器复制到宿主机dockercpweb:/容器内文件路径 /宿主机保存路径dockercpweb:/app/logs/error.log ./error.log# 从宿主机复制到容器dockercp/宿主机路径 web:/容器内路径dockercp./local_config.yaml web:/app/config.yaml#把本地 ./data/chroma_db 完整写入共享匿名卷 chroma_data所有容器永久共享dockerrun--rm\-v$(pwd)/data/chroma_db:/src\-vchroma_data:/dst\alpinecp-r/src/. /dst/八 。补充操作# 手动给镜像打标签dockertag 原镜像名:tag 仓库地址/镜像名:版本# 镜像导出迁移服务器离线部署用dockersave-oxxx.tar 镜像名1 镜像名2# 离线导入镜像dockerload-ixxx.tar# 查看镜像分层构建详情排查镜像体积过大dockerhistory镜像名# 查看Docker磁盘占用详情镜像、容器、卷、缓存占用大小dockersystemdf# 重启Docker服务WSL内docker挂了时报错用sudoservicedockerrestart# 设置Docker开机自启sudosystemctlenabledocker