Docker 高频常用命令速查表本表筛选了日常开发、运维、生产环境中80%场景高频使用的核心命令附带可直接运行的实战示例可直接复制保存为本地速查手册。一、镜像核心管理命令命令核心作用高频必用参数可直接运行的实战示例docker pull从仓库拉取镜像-a拉取所有标签--platform指定CPU架构1. 拉取轻量稳定版docker pull nginx:alpine2. 拉取指定架构镜像docker pull --platform linux/amd64 mysql:8.0docker images查看本地所有镜像-a显示中间层镜像-q仅输出镜像ID--filter过滤1. 查看所有镜像docker images2. 批量删除专用docker images -qdocker rmi删除本地镜像-f强制删除含被容器引用的镜像1. 按名称删除docker rmi nginx:alpine2. 批量删除所有镜像docker rmi $(docker images -q)docker tag镜像打标签推送仓库必备无1. 私有仓库标签docker tag nginx:alpine my-registry.com/nginx/nginx:v1.02. 镜像重命名docker tag old-image:v1 new-image:v2docker save/load镜像离线导出/导入-o指定输出文件-i指定输入文件1. 导出镜像docker save -o nginx-alpine.tar nginx:alpine2. 导入镜像docker load -i nginx-alpine.tardocker inspect查看镜像/容器/卷的元数据--format格式化输出1. 查看完整信息docker inspect nginx:alpine2. 仅获取镜像IDdocker inspect --format {{.Id}} nginx:alpine二、容器全生命周期管理最高频核心命令核心作用高频必用参数可直接运行的实战示例docker run创建并启动容器最核心-d后台守护运行-it交互式终端--name指定容器名-p 主机端口:容器端口端口映射-e设置环境变量--rm容器退出自动删除--network指定网络-v挂载卷1. 最简启动nginxdocker run -d --name nginx-demo -p 80:80 nginx:alpine2. 交互式临时容器docker run -it --rm ubuntu:20.04 /bin/bash3. 带环境变量启动mysqldocker run -d --name mysql-demo -p 3306:3306 -e MYSQL_ROOT_PASSWORD123456 mysql:8.0docker ps查看容器列表-a查看所有容器含停止的-q仅输出容器ID-s显示容器大小1. 查看运行中容器docker ps2. 查看所有容器docker ps -a3. 批量删除专用docker ps -aqdocker start/stop/restart启动/停止/重启容器-t停止前等待的秒数1. 停止容器docker stop nginx-demo2. 启动停止的容器docker start nginx-demo3. 强制重启docker restart nginx-demodocker rm删除容器-f强制删除运行中的容器-v同时删除关联的匿名卷1. 删除停止的容器docker rm nginx-demo2. 强制删除运行中容器docker rm -f nginx-demo3. 批量删除所有容器docker rm -f $(docker ps -aq)docker exec进入运行中容器执行命令-it交互式终端必备1. 进入容器bash终端docker exec -it nginx-demo /bin/bash2. 容器内执行单条命令docker exec nginx-demo cat /etc/nginx/nginx.confdocker logs查看容器日志-f实时跟踪日志--tail N仅显示最后N行-t显示时间戳1. 查看完整日志docker logs nginx-demo2. 实时跟踪日志docker logs -f nginx-demo3. 查看最后100行日志docker logs --tail 100 nginx-demo三、容器运维排障高频命令命令核心作用实战示例docker cp主机与容器互传文件1. 主机→容器docker cp ./index.html nginx-demo:/usr/share/nginx/html/2. 容器→主机docker cp nginx-demo:/etc/nginx/nginx.conf ./docker port查看容器端口映射docker port nginx-demodocker top查看容器内运行进程docker top nginx-demodocker stats实时查看容器CPU/内存/磁盘IO占用1. 查看所有容器docker stats2. 查看指定容器docker stats nginx-demodocker diff查看容器文件系统变更docker diff nginx-demo四、数据卷持久化管理命令命令核心作用高频参数实战示例docker volume create创建自定义命名卷生产推荐--driver指定存储驱动默认localdocker volume create mysql-datadocker volume ls查看所有数据卷-q仅输出卷名docker volume lsdocker volume inspect查看卷的挂载路径、配置详情无docker volume inspect mysql-datadocker volume rm删除数据卷-f强制删除docker volume rm mysql-datadocker volume prune清理未使用的卷释放磁盘-a清理所有未使用卷-f不提示确认docker volume prune -f容器挂载核心用法--1. 命名卷挂载推荐docker run -d -v mysql-data:/var/lib/mysql mysql:8.02. 主机目录绑定挂载docker run -d -v /host/mysql/data:/var/lib/mysql mysql:8.03. 只读挂载docker run -d -v nginx-config:/etc/nginx:ro nginx:alpine五、Docker网络管理命令命令核心作用高频参数实战示例docker network create创建自定义网络生产推荐--driver网络驱动默认bridge--subnet指定子网--gateway指定网关1. 创建基础网络docker network create app-net2. 创建指定子网网络docker network create --subnet 172.20.0.0/16 --gateway 172.20.0.1 app-netdocker network ls查看所有网络-q仅输出网络IDdocker network lsdocker network inspect查看网络详情接入容器、IP分配无docker network inspect app-netdocker network rm删除网络无docker network rm app-netdocker network prune清理未使用的网络-f不提示确认docker network prune -fdocker network connect/disconnect容器接入/断开网络--ip指定容器IP--alias设置网络别名1. 接入网络docker network connect app-net nginx-demo2. 断开网络docker network disconnect app-net nginx-demo六、镜像构建与仓库交互命令命令核心作用高频参数实战示例docker build基于Dockerfile构建自定义镜像-t指定镜像名和标签-f指定Dockerfile路径--build-arg传递构建参数--no-cache不使用构建缓存1. 基础构建docker build -t my-java-app:v1.0 .2. 指定Dockerfile构建docker build -t my-app:v1 -f ./Dockerfile.prod .3. 带构建参数构建docker build -t my-app:v1 --build-arg APP_VERSION1.0 .docker login登录镜像仓库默认Docker Hub-u用户名-p密码1. 登录Docker Hubdocker login -u 你的用户名2. 登录私有仓库docker login my-registry.comdocker logout登出镜像仓库无docker logout my-registry.comdocker push推送镜像到仓库无docker push my-registry.com/nginx/nginx:v1.0docker search搜索Docker Hub镜像--filter is-officialtrue仅筛选官方镜像docker search --filter is-officialtrue nginx七、系统清理与信息查看命令命令核心作用实战示例docker system info查看Docker系统全局信息docker system infodocker system df查看Docker磁盘占用详情docker system dfdocker system prune一键清理无用资源1. 基础清理docker system prune2. 深度清理含未使用镜像和卷docker system prune -a --volumes -fDocker核心模块深入详解1. Dockerfile 多阶段构建生产环境核心最佳实践核心原理多阶段构建允许在一个Dockerfile中使用多个FROM指令每个阶段对应一个独立的构建环境最终仅保留应用运行所需的最小文件彻底解决「构建环境臃肿」问题大幅减小镜像体积、提升分发效率与安全性。核心优势镜像体积大幅缩减Java应用可从数百M降至几十M分离构建环境与运行环境避免源码、构建工具、依赖缓存进入生产镜像减少攻击面提升容器安全性单Dockerfile完成全流程无需额外脚本维护实战示例示例1Java SpringBoot 应用多阶段构建# 第一阶段构建环境完整JDKMaven负责编译打包 FROM maven:3.8.8-openjdk-11 AS builder WORKDIR /app # 提前复制依赖配置最大化利用构建缓存 COPY pom.xml . RUN mvn dependency:go-offline # 复制源码并编译打包 COPY src ./src RUN mvn clean package -DskipTests # 第二阶段运行环境仅JRE最小运行时 FROM openjdk:11-jre-slim WORKDIR /app # 仅从构建阶段复制编译好的jar包无多余文件 COPY --frombuilder /app/target/*.jar app.jar # 声明端口 EXPOSE 8080 # 启动命令 ENTRYPOINT [java, -jar, app.jar]示例2前端Vue/React 应用多阶段构建# 第一阶段构建环境Node环境负责打包前端代码 FROM node:18-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build # 第二阶段运行环境仅Nginx托管静态文件 FROM nginx:alpine # 从构建阶段复制打包好的静态文件 COPY --frombuilder /app/dist /usr/share/nginx/html # 复制自定义nginx配置可选 COPY nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80 CMD [nginx, -g, daemon off;]进阶技巧给FROM指令加AS别名避免用数字索引引用阶段可读性更强COPY --from不仅可以引用当前Dockerfile的阶段还可以直接引用外部镜像如COPY --frombusybox:1.36 /bin/busybox /bin/把不变的依赖配置放在前面频繁变更的源码放在后面最大化利用构建缓存2. 自定义网络进阶用法与最佳实践为什么不用默认bridge网络默认bridge网络存在明显缺陷仅支持IP互访不支持容器名/DNS解析容器重启IP会失效所有容器共用一个网桥无网络隔离安全性差无法自定义网段、网关规则。自定义bridge网络核心优势内置DNS解析容器之间可直接通过容器名/网络别名互访无需硬编码IP网络隔离不同业务的容器可划分到不同网络互不干扰可自定义子网、网关、IP范围适配企业网络规划可灵活控制容器的网络接入与断开无需重启容器生产环境最佳实践按业务维度划分网络比如前端网络、后端业务网络、数据库网络仅开放必要的网络连通容器启动时直接指定网络示例# 1. 创建业务网络dockernetwork create--driverbridge--subnet172.30.0.0/16 business-net# 2. 启动后端服务接入业务网络dockerrun-d--nameuser-service--networkbusiness-net user-service:v1# 3. 启动前端服务接入同一网络可直接通过容器名user-service访问后端dockerrun-d--nameweb-frontend--networkbusiness-net-p80:80 web-frontend:v1多网络接入一个容器可同时接入多个网络比如网关容器同时接入前端和后端网络实现流量转发非必要不使用host网络host网络会破坏容器的网络隔离性仅在极致性能需求场景使用3. 数据卷核心选型与最佳实践三种挂载方式选型对比挂载类型核心特点适用场景不适用场景命名卷Docker统一管理生命周期独立于容器支持备份/迁移/驱动扩展生产环境数据库、业务数据持久化需要在主机上频繁修改文件的场景绑定挂载直接绑定主机目录主机与容器双向实时同步性能最高开发环境代码热更新、配置文件挂载多主机集群环境、需要Docker统一管理的场景匿名卷Docker自动创建无固定名称生命周期默认随容器临时数据存储、无需长期保留的缓存生产环境核心数据持久化生产环境最佳实践核心数据必须用命名卷数据库、业务文件等核心持久化数据优先使用命名卷避免绑定挂载的权限、路径依赖问题配置文件用只读挂载nginx、mysql等配置文件挂载时加:ro只读参数避免容器内误修改禁止在容器可写层存储持久化数据容器删除后数据会丢失且会增大容器存储开销定期备份命名卷数据通过docker volume inspect查看卷的挂载路径定期备份核心数据定期清理无用卷执行docker volume prune清理废弃卷避免磁盘占用过高4. Dockerfile 编写最佳实践清单优先使用alpine、slim版本的最小基础镜像减小镜像体积和攻击面合并RUN指令用连接多个命令减少镜像层数安装依赖后必须清理缓存优化构建缓存不变的内容依赖配置、环境变量放在前面频繁变更的源码放在后面使用非root用户运行容器避免容器内使用root权限提升安全性禁止使用latest标签基础镜像和自定义镜像均指定固定版本号避免版本不一致问题使用ENTRYPOINTCMD的最佳组合ENTRYPOINT指定固定启动命令CMD指定默认参数方便启动时传参添加HEALTHCHECK健康检查让Docker自动检测容器运行状态实现故障自动重启禁止在Dockerfile中存储密码、密钥等敏感信息通过环境变量或密钥管理工具注入编写.dockerignore文件排除不需要的文件node_modules、.git、日志等减小构建上下文