从入门到实战全面解析Docker镜像常用命令

 更新时间:2025年11月27日 09:26:22   作者:爱吃烤鸡翅的酸菜鱼  
Docker 作为容器化技术的标杆工具,其镜像管理能力是实现高效 CI/CD 流程的核心,本文将为大家带来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构建耗时缓存命中率
未加 ignore3min
添加合理 ignore1min

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 prune5-10%安全
docker image prune -a20-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镜像常用命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker 安装Oracle-12C的方法详解

    docker 安装Oracle-12C的方法详解

    这篇文章主要介绍了docker 安装Oracle-12C的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • 通过Docker容器部署Python环境的全流程

    通过Docker容器部署Python环境的全流程

    在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容器化部署Python环境,涵盖从基础镜像构建到生产环境配置的全流程,需要的朋友可以参考下
    2025-09-09
  • Docker时间不一致,时区设置方式

    Docker时间不一致,时区设置方式

    这篇文章主要介绍了Docker时间不一致,时区设置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Docker的boot2docker.iso镜像使用

    Docker的boot2docker.iso镜像使用

    这篇文章主要介绍了Docker的boot2docker.iso镜像使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Docker快速部署GitLab的详细指南

    Docker快速部署GitLab的详细指南

    在 Windows 上使用 Docker 部署 GitLab 是完全可行的,推荐使用 Docker Desktop for Windows 来运行 GitLab 容器,下面小编就来详细介绍一下吧
    2025-09-09
  • docker启动nginx无法访问的问题解决

    docker启动nginx无法访问的问题解决

    本文主要介绍了docker启动nginx无法访问的问题解决,主要遇到404错误,问题原因是配置文件路径错误和权限问题,下面就来具体介绍一下问题解决,感兴趣的可以了解一下
    2025-02-02
  • Docker数据备份恢复实现过程详解

    Docker数据备份恢复实现过程详解

    这篇文章主要介绍了Docker数据备份恢复实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • 使用Docker部署Spring Boot项目的实现步骤

    使用Docker部署Spring Boot项目的实现步骤

    本文主要介绍了使用Docker部署Spring Boot项目的实现步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • Docker中Cgroup资源配置的实现

    Docker中Cgroup资源配置的实现

    Cgroup不仅可以限制被namespace 隔离起来的资源,还可以为资源设置权重、计算使用量、操控进程启停等,本文主要介绍了Docker中Cgroup资源配置的实现,感兴趣的可以了解一下
    2023-09-09
  • 使用Docker部署Filestash文件管理器的实现步骤

    使用Docker部署Filestash文件管理器的实现步骤

    Filestash是一款功能强大的网络文件管理工具,它允许用户在单一界面下管理分布于不同地点和平台的数据,本文就来介绍一下Docker部署Filestash文件管理器的实现步骤,感兴趣的可以了解一下
    2025-07-07

最新评论