从入门到实战全面解析Docker镜像常用命令
作者:爱吃烤鸡翅的酸菜鱼
作为一位深耕 Java 领域的技术博主,我深知容器化技术在现代应用开发中的重要性。Docker 作为容器化技术的标杆工具,其镜像管理能力是实现高效 CI/CD 流程的核心。今天,我将为大家带来Docker 镜像常用命令的全方位解析,这份指南帮助你真正掌握 Docker 镜像管理的核心技能。

一、背景与问题:为什么需要精通 Docker 镜像命令
在微服务架构盛行的当下,Docker 已经成为应用部署的标准工具链。然而,许多开发者在使用 Docker 时存在以下问题:
- 只知其一不知其二:知道
docker pull但不清楚其背后的注册表机制 - 镜像臃肿问题:构建的镜像动辄数百 MB,极大影响部署效率
- 版本管理混乱:缺乏有效的镜像版本控制策略,导致生产环境问题频发
- 安全风险:未对镜像进行安全扫描,存在已知漏洞的风险
二、Docker 镜像核心命令详解

2.1 镜像基础管理命令
docker images:查看本地镜像列表
基本用法:
docker images [OPTIONS] [REPOSITORY[:TAG]]
常用参数:
| 参数 | 说明 |
| -a | 显示所有镜像(包括中间层) |
| --digests | 显示镜像摘要信息 |
| -f | 过滤镜像(如 dangling=true) |
| --format | 自定义输出格式(Go 模板语法) |
实战示例:
# 以表格形式查看所有 java 镜像
docker images java --format "table {{.Repository}}\t{{.Tag}}\t{{.ID}}\t{{.Size}}"
# 只显示镜像ID和名称
docker images --format "{{.ID}}: {{.Repository}}"
关键知识点:
- 镜像 ID 实际是镜像的 层哈希值,相同的层可以被多个镜像复用
- 虚悬镜像(dangling images):没有标签的镜像,通常由镜像更新产生
- 使用
--digests查看镜像的签名摘要(用于安全校验)
高级用法:
# 查看所有镜像(包括中间层镜像) docker images -a # 只显示镜像ID(适合脚本处理) docker images -q # 过滤特定镜像,比如只看 nginx docker images nginx # 显示更详细的信息(含创建时间、容器ID等) docker images --no-trunc
docker tag:为镜像添加标签
语法:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

典型场景:
1.为本地构建的镜像打上可推送的标签
docker tag my-app:1.0 registry.example.com/my-project/my-app:1.0
2.版本继承(如从 1.0 到 1.0.1)
docker tag my-app:1.0 my-app:1.0.1
深度解析:
docker tag实际上是创建一个轻量级的指针,不增加磁盘空间占用- 多个标签可以指向同一个镜像 ID(证明它们共享相同的层)
- 删除标签不会影响镜像内容,只有当所有标签都被删除时,镜像才会被清理
2.2 镜像获取与推送命令
docker pull:从注册表获取镜像
基础用法:docker pull [OPTIONS] NAME[:TAG|@DIGEST]
关键参数:
| 选项 | 说明 |
|---|---|
| --all-tags, -a | 拉取仓库中所有标签 |
| --quiet, -q | 静默模式,只输出镜像ID |
| --platform | 指定平台架构(arm64/x86_64) |
底层原理:
- 首先解析注册表地址(默认
docker.io) - 获取镜像清单(manifest)获取层信息
- 逐层拉取并验证(使用内容寻址存储)
- 最后组装成完整镜像
docker pull nginx
为了提高拉取速度,可以在配置文件中配置国内镜像源:

{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com"
]
}
拉去nginx镜像:
docker pull nginx

docker push:推送镜像到注册表
使用流程:
# 1. 登录注册表(首次需要) docker login registry.example.com # 2. 打标签(需要符合注册表规范) docker tag local-image:latest registry.example.com/project/image:1.2.3 # 3. 推送镜像 docker push registry.example.com/project/image:1.2.3
必备条件:
- 镜像已打上目标仓库的标签;
- 已执行
docker login登录对应仓库; - 仓库权限允许推送(尤其私有仓库需配置 ACL)。
安全实践:
- 始终使用语义化版本(如 1.2.3 而不是 latest)
- 为敏感仓库配置基于角色的访问控制(RBAC)
- 对生产镜像使用签名验证(Notary)
2.3镜像的导入与导出
docker save/docker load:保存镜像
语法:
# 保存镜像 docker save -o my-image.tar my-app:1.2 # 加载镜像 docker load -i my-image.tar
将指定文件保存至tar归档文件

导入使用docker命令导出的镜像
先删除原有的镜像(如果直接load会覆盖同名镜像或者忽略)
docker rmi nginx:latest
保证进入到tar的文件目录:
cd /home/ubuntu/test
执行:
docker load -i nginx.tar

参数详解:
docker save --help Options: -o, --output string 输出文件路径(默认 stdout) -q, --quiet 静默模式(不显示进度条)
优势:适用于生产环境镜像备份、离线部署、内网分发等场景。
docker export/docker import:导入镜像
从归档文件中常创建镜像,与export搭配使用
docker run -d --name my-nginx nginx:latest docker export -o my-nginx-snapshot.tar my-nginx docker import my-nginx-snapshot.tar my-new-nginx:custom docker images

命令功能对比表
| 方式 | 功能描述 | 是否保留历史层 | 适用对象 |
|---|---|---|---|
| save/load | 镜像保存与加载(推荐用于备份镜像) | ✅ 是 | 镜像 |
| export/import | 容器导出与导入(用于迁移容器状态) | ❌ 否 | 容器快照 |
2.4 镜像构建与优化命令
docker build:构建镜像
标准构建:docker build -t my-app:1.0 -f Dockerfile .
关键优化参数:
| 选项 | 说明 |
|---|---|
| -t, --tag | 指定镜像名称与标签 |
| -f, --file | 指定 Dockerfile 路径 |
| --build-arg KEY=VALUE | 设置构建参数 |
| --no-cache | 强制不使用缓存重新构建 |
| --squash | 合并所有层(实验性功能) |
高级实战:
# 多阶段构建:分离构建环境和运行环境 docker build -t frontend:prod --target production . # 通过 SSH 连接构建(适用于私有依赖) docker build --ssh default=id_rsa -t my-app .
dockerignore:构建优化关键
典型内容:
# 忽略构建不需要的文件 **/.git **/node_modules **/*.log **/target **/dist # 但保留必要的配置 !Dockerfile !pom.xml !.mvn
作用原理:
- 类似
.gitignore,阻止不必要的文件进入构建上下文 - 可减少 30%+ 的构建上下文传输时间
- 避免敏感文件被意外打包
对比效果:
| 场景 | 是否添加 .dockerignore | 构建耗时 | 缓存命中率 |
|---|---|---|---|
| 未加 ignore | ❌ | 3min | 低 |
| 添加合理 ignore | ✅ | 1min | 高 |
2.5 镜像清理与维护命令
docker rmi:删除镜像
docker rmi [OPTIONS] IMAGE [IMAGE...]

安全删除:
# 删除指定标签的镜像(如果无其他标签引用) docker rmi my-app:1.0 # 删除所有虚悬镜像(<none>标签) docker rmi $(docker images -f "dangling=true" -q)
docker image prune:智能清理
清理策略:
# 清理未被使用的镜像(默认仅删除虚悬镜像) docker image prune # 删除所有未被容器引用的镜像(谨慎使用) docker image prune -a

清理效果对比:
| 命令 | 可释放空间 | 安全性 |
| docker image prune | 5-10% | 安全 |
| docker image prune -a | 20-30% | 较高风险 |
docker history查看镜像历史信息
docker history [OPTIONS] IMAGE

docker image inspect查看镜像详细信息
docker image inspect [OPTIONS] IMAGE [IMAGE...]
案例:
docker image inspect nginx:latest

三、总结与进阶学习
Docker镜像命令库是Java开发者必备的核心技能,希望本文能够帮助你在实际项目中更高效地使用Docker技术。记住,掌握这些命令只是第一步,更重要的是理解背后的原理和最佳实践,这样才能在面对复杂的生产环境时游刃有余。
到此这篇关于从入门到实战全面解析Docker镜像常用命令的文章就介绍到这了,更多相关Docker镜像常用命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
