docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Docker镜像常用命令

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

作者:爱吃烤鸡翅的酸菜鱼

Docker 作为容器化技术的标杆工具,其镜像管理能力是实现高效 CI/CD 流程的核心,本文将为大家带来Docker 镜像常用命令的全方位解析,希望对大家有所帮助

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

一、背景与问题:为什么需要精通 Docker 镜像命令

在微服务架构盛行的当下,Docker 已经成为应用部署的标准工具链。然而,许多开发者在使用 Docker 时存在以下问题:

二、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}}"

关键知识点:

高级用法:

# 查看所有镜像(包括中间层镜像)
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

深度解析:

2.2 镜像获取与推送命令

docker pull:从注册表获取镜像

基础用法:docker pull [OPTIONS] NAME[:TAG|@DIGEST]

关键参数:

选项说明
--all-tags, -a拉取仓库中所有标签
--quiet, -q静默模式,只输出镜像ID
--platform指定平台架构(arm64/x86_64)

底层原理:

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

必备条件:

安全实践:

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

作用原理:

对比效果:

场景是否添加 .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镜像常用命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文