)
一、前言Docker 镜像Image是容器的模板是 Docker 生态的核心基础。所有容器的创建、运行、迁移、部署都依赖镜像熟练掌握镜像管理命令是后端与运维的必备技能。本文整理全网最全的 Docker 镜像管理命令包含镜像查询、搜索、拉取、构建、打标签、打包迁移、删除、批量清理等实战场景零基础可直接上手。二、镜像基础查询命令2.1 查看本地所有镜像日常最常用的镜像查看命令展示本地已下载的顶层镜像信息。# 基础查看本地镜像常用dockerimages# 完整语法dockerimages[OPTIONS][仓库名:标签]# 查看所有镜像包含中间层镜像、悬空镜像dockerimages-a# 只显示镜像ID批量操作必备dockerimages-aq字段说明REPOSITORY镜像仓库名称TAG镜像版本标签latest 为最新版IMAGE ID镜像唯一IDCREATED镜像创建时间SIZE镜像占用磁盘大小2.2 格式化输出镜像信息默认展示字段冗余通过格式化命令精简输出结果适配脚本统计场景。# 表格形式展示镜像ID、仓库、标签、大小dockerimages--formattable {{.ID}}\t{{.Repository}}\t{{.Tag}}\t{{.Size}}# 只输出镜像名称和标签无表格表头dockerimages--format{{.Repository}}:{{.Tag}}2.3 搜索远程镜像直接在 Docker 官方仓库搜索所需镜像无需打开网页。# 搜索指定镜像以nginx为例dockersearch nginx# 限制搜索结果数量只展示前5条dockersearch--limit5ubuntu# 只展示官方认证镜像dockersearch--filteris-officialtruemysql三、镜像拉取与版本管理3.1 拉取远程镜像从 Docker Hub 拉取镜像到本地不指定标签默认拉取 latest 最新版本。# 拉取最新版nginxdockerpull nginx# 拉取指定版本镜像推荐固定版本避免环境不一致dockerpull nginx:1.24.0# 拉取阿里云/私有仓库镜像示例dockerpull registry.aliyuncs.com/nginx_official/nginx:1.24.03.2 镜像打标签重命名常用于镜像私有化部署、仓库迁移给原有镜像新增别名标签。# 语法docker tag 原镜像:原标签 新镜像名:新标签dockertag nginx:1.24.0 my-nginx:v1.0# 打私有仓库标签用于推送私有仓库dockertag nginx:1.24.0192.168.1.100:8080/nginx/nginx:1.24.0 注意打标签不会生成新镜像只是给原镜像新增一个标识镜像ID保持不变。四、镜像构建Dockerfile打包基于 Dockerfile 自定义构建镜像是项目容器化核心操作。# 基础构建当前目录Dockerfiledockerbuild-tmy-web:v1.0.# 不使用缓存构建解决缓存导致的更新不生效问题dockerbuild --no-cache-tmy-web:v1.0.# 指定Dockerfile文件构建非默认文件名dockerbuild-fDockerfile-prod-tmy-web:prod.参数说明-t指定镜像名称和版本标签.指定构建上下文目录当前目录–no-cache禁用构建缓存全新构建五、镜像打包与跨机器迁移核心实战日常运维高频场景本地自定义镜像无法从远程拉取需通过 save/load 打包迁移到其他服务器。5.1 打包本地镜像save# 基础打包将镜像打包为tar文件dockersave nginx:1.24.0-onginx-1.24.0.tar# 同时打包多个镜像dockersave-omulti-images.tar nginx:1.24.0 mysql:8.0 redis:7.05.2 加载镜像文件load在目标服务器加载打包好的镜像文件恢复镜像。# 加载tar镜像文件dockerload-inginx-1.24.0.tar✅ 优势保留镜像所有配置、版本、层级迁移后可直接运行容器零环境差异。六、镜像删除与磁盘清理长期使用Docker会产生大量冗余镜像、悬空镜像占用磁盘空间需定期清理。6.1 删除指定镜像# 基础删除镜像镜像无容器依赖时使用dockerrmi nginx:1.24.0# 强制删除镜像存在容器依赖也可删除dockerrmi-fnginx:1.24.0# 通过镜像ID删除dockerrmi-f镜像ID 重点如果镜像有多个标签删除单个标签仅移除别名不会删除镜像本体。6.2 清理悬空镜像无用残留镜像悬空镜像dangling image无标签、无容器引用的残留镜像纯垃圾文件。# 清理所有悬空镜像dockerimage prune# 强制清理无需手动确认dockerimage prune-f6.3 批量清理所有未使用镜像一键清理所有未被容器使用的镜像、网络、缓存极致释放磁盘空间。# 清理所有闲置资源镜像、容器、网络、缓存dockersystem prune-a# 强制一键清理生产环境慎用提前确认dockersystem prune-a-f6.4 批量删除所有本地镜像测试环境重置场景专用生产环境禁止随意使用。# 批量删除所有本地镜像dockerrmi-f$(dockerimages-aq)七、高频命令速查表功能场景核心命令查看本地镜像docker images / docker images -a搜索远程镜像docker search 镜像名拉取镜像docker pull 镜像名:标签镜像打标签docker tag 原镜像 新镜像构建自定义镜像docker build -t 镜像名:标签打包镜像docker save -o 输出文件.tar 镜像名加载镜像docker load -i 镜像文件.tar删除指定镜像docker rmi -f 镜像名/ID清理悬空镜像docker image prune -f全盘清理闲置资源docker system prune -a八、常见问题总结1、镜像删除失败有容器依赖解决方案先删除关联容器docker rm -f 容器ID再删除镜像或直接docker rmi -f 镜像ID强制删除。2、打包迁移后镜像无标签解决方案打包时必须指定镜像名:标签不要仅用镜像ID打包避免加载后无标识。3、磁盘空间占用过高解决方案定期执行docker image prune清理悬空镜像测试环境可定期执行docker system prune -a全盘清理。结尾寄语Docker镜像管理是容器化开发、运维的基础熟练掌握以上命令可完美解决镜像查询、版本管控、机器迁移、磁盘冗余等99%的实战问题。后续持续更新 Docker 容器管理、Docker Compose 编排、镜像仓库搭建、K8s 容器部署等干货点赞收藏关注不迷路