5、docker镜像管理命令

1、命令总览

命令(含关键参数) 作用 出现频率 备注
docker buildx build --platform ... -t ... --push . 一次构建并推送多平台镜像 高频 需先 docker buildx create --use
docker buildx build -o type=docker,dest=xxx.tar . 构建后离线导出 tar 包 中频 只导出单平台;tar 可 U 盘带走
docker save -o xxx.tar img1:tag img2:tag ... 把已有镜像打包成 tar 中频 不依赖 buildx;支持多镜像一次性打包
docker load -i xxx.tar 从 tar 恢复镜像到本地 中频 与 save 配对使用;自动恢复 tag
docker tag SOURCE[:TAG] TARGET[:TAG] 给镜像打新名字/标签 高频 打标签后可直接 push
docker rmi 镜像ID/仓库:标签 ... 删除一个或多个镜像 高频 -f 可强制删除正被容器引用的镜像
docker image prune -a -f 清理所有未被使用的镜像 中频 -a 会删除所有悬空+未使用镜像,慎用
docker history 镜像[:TAG] 查看镜像分层历史 低频 排查"镜像为什么这么大"时很有用

2、docker buildx*

2.1、Docker build

命令 作用 出现频率 备注
docker build -t <image_name>:<tag> . 根据当前目录中的 Dockerfile 生成镜像 高频 构建镜像的基本命令
docker build -t myapp:v1 . 构建镜像并标记为 myapp:v1 高频 提供镜像的名称和版本标签
docker build -t myImage -f demo/Dockerfile 使用指定目录中的 Dockerfile 构建镜像 中频 适用于 Dockerfile 不在当前目录的情况
复制代码
# 构建镜像并标记为 myapp:v1
docker build -t myapp:v1 .

# 构建指定标签的 Docker 镜像
docker build -t myImage:v0.1.0 .

# 使用指定目录中的 Dockerfile 构建映像
docker build -t myImage -f demo/Dockerfile

2.2、docker buildx create

命令 作用 出现频率 备注
docker buildx create --name <builder_name> 创建一个新的 builder 实例 中频 可以指定 builder 的名称
docker buildx create --name <builder_name> --driver docker-container 创建使用 Docker 容器作为驱动的 builder 实例 中频 适用于需要远程构建的场景
docker buildx create --name <builder_name> --driver kubernetes 在 Kubernetes 集群中创建 builder 实例 低频 需要 Kubernetes 环境支持
docker buildx create --name <builder_name> --bootstrap 创建并自动启动 builder 实例 中频 简化创建和启动流程
docker buildx create --name <builder_name> --use 创建新的 builder 并将其设为默认 高频 之后的所有构建命令将使用此 builder
复制代码
# 创建一个新的名为 mybuilder 的 builder 实例
docker buildx create --name mybuilder

# 创建使用 Docker 容器作为驱动的 builder 实例
docker buildx create --name mybuilder --driver docker-container

# 创建并自动启动 builder 实例
docker buildx create --name mybuilder --bootstrap

# 创建新的 builder 并将其设为默认
docker buildx create --name mybuilder --use

# 创建一个自定义 builder 实例并立即激活
docker buildx create --name mybuilder --use

2.3、docker buildx use

命令 作用 出现频率 备注
docker buildx use <builder_name> 切换到指定的 builder 实例 高频 切换后所有构建命令将使用此 builder
docker buildx use --name <builder_name> 切换到指定名称的 builder 实例 中频 需要指定 builder 的名称
docker buildx use --use 将当前 builder 设为默认 中频 后续命令无需指定 builder 名称
docker buildx use --bootstrap 创建并切换到新的 builder 实例 中频 适用于需要快速创建并使用新 builder 的场景
docker buildx use --list 列出所有可用的 builder 实例 低频 显示当前所有 builder 的名称和状态
复制代码
# 切换到名为 mybuilder 的 builder 实例
docker buildx use mybuilder

# 切换到名为 mybuilder 的 builder 实例,并将其设为默认
docker buildx use --name mybuilder --use

# 创建新的 builder 实例并立即切换到它
docker buildx use --bootstrap

# 列出所有可用的 builder 实例
docker buildx use --list

# 切换到默认的 builder 实例
docker buildx use default

2.4、docker buildx ls

命令 作用 出现频率 备注
docker buildx ls 列出所有可用的 builder 实例 中频 显示所有 builder 的名称、状态和节点信息
docker buildx ls -q 仅列出 builder 实例的名称 低频 适合脚本处理,输出名称列表
docker buildx ls --quiet 同上,仅输出 builder 名称 低频 等同于 -q
docker buildx ls --format "table {``{.Name}}\t{``{.DriverName}}" 自定义输出格式 低频 根据需要显示不同信息
复制代码
# 列出所有可用的 builder 实例及其详细信息
docker buildx ls

# 仅列出所有 builder 的名称
docker buildx ls -q

# 列出 builder 名称和使用的驱动名称
docker buildx ls --format "table {{.Name}}\t{{.DriverName}}"

# 列出所有 builder,包括详细信息
docker buildx ls --all

2.5、docker buildx build

命令 作用 出现频率 备注
docker buildx build 使用 BuildKit 构建镜像 高频 默认使用当前激活的 builder
--platform 指定目标平台(架构/操作系统) 高频 支持多平台构建
--push 构建完成后推送到注册中心 高频 需要先登录
--output 指定构建产物输出 中频 支持导出为 tar 或其他格式
--no-cache 构建时不使用缓存 中频 强制重新构建所有层
--load 构建完成后将镜像导入本地环境 中频 适用于不想推送到远程的场景
--build-arg 传递构建参数 中频 动态定义环境变量
-标签 构建时设置镜像标签 中频 可以设置版本标签
复制代码
# 使用当前激活的 builder 构建镜像
docker buildx build -t myimage:latest .

# 指定目标平台构建并推送镜像
docker buildx build --platform linux/amd64,linux/arm64 -t myregistry/myimage:latest --push .

# 构建完成后将镜像导入本地环境
docker buildx build -t myimage:latest --load .

# 构建时不使用缓存,强制重新构建所有层
docker buildx build --no-cache -t myimage:latest .

# 构建时传递构建参数
docker buildx build --build-arg HTTP_PROXY=http://proxy:8080 -t myimage:latest .

# 构建并导出为 tar 文件
docker buildx build -t myimage:latest -o type=docker,dest=myimage.tar .

2.6、docker buildx bake

命令 作用 出现频率 备注
docker buildx bake 基于文件进行构建 中频 允许用户在一个命令中定义多个构建配置和目标平台,实现自动化批量构建和发布跨平台镜像
docker buildx bake -f <文件> 指定构建定义文件 高频 支持 HCL、JSON 或 YAML 文件格式
docker buildx bake <目标> 构建指定目标 高频 可以指定一个或多个目标进行构建
docker buildx bake --push 构建完成后推送到注册中心 中频 需要先登录
docker buildx bake --load 构建完成后将镜像导入本地环境 中频 适用于不想推送到远程的场景
docker buildx bake --no-cache 构建时不使用缓存 中频 强制重新构建所有层
docker buildx bake --set <覆盖配置> 覆盖目标值 中频 例如 targetpattern.key=value
复制代码
# 构建所有目标
docker buildx bake

# 构建特定目标
docker buildx bake myapp

# 构建特定目标并推送
docker buildx bake --push myapp

# 构建特定目标并导入到本地环境
docker buildx bake --load myapp

# 构建特定目标不使用缓存
docker buildx bake --no-cache myapp

# 构建特定目标并覆盖配置
docker buildx bake --set "myapp.tags=latest" myapp

2.7、docker buildx inspect

命令 作用 出现频率 备注
docker buildx inspect 显示指定 builder 实例的详细信息 低频 包括节点信息、支持的平台等
--format 定制输出格式 低频 用于脚本处理,输出特定信息
复制代码
# 显示名为 mybuilder 的 builder 实例的详细信息
docker buildx inspect mybuilder

# 以 JSON 格式输出 builder 实例的信息,便于脚本处理
docker buildx inspect mybuilder --format "{{json .}}"

# 仅输出 builder 实例的节点信息
docker buildx inspect mybuilder --format "{{json .Node }}"

2.8、docker buildx du

命令 作用 出现频率 备注
docker buildx du 显示当前所选构建器的磁盘使用情况 中频 包括缓存条目的 ID、大小以及最后访问时间。末尾的 TOTAL 行表示当前构建器的构建缓存占用的总磁盘空间。
--filter 提供过滤值 低频 用于过滤输出结果
--verbose 提供更详细的输出 中频 显示可变和共享状态,以及有关相应层的附加信息
--builder 覆盖配置的构建器实例 中频 检查特定构建器的磁盘使用情况
复制代码
# 查看当前构建器的磁盘使用情况
docker buildx du

# 使用详细输出来检查磁盘使用记录
docker buildx du -v

# 检查特定构建器实例的磁盘使用情况
docker buildx du --builder mybuilder

2.9、docker buildx prune

命令 作用 出现频率 备注
docker buildx prune 清理构建缓存 中频 包括内部镜像和未使用的构建缓存条目
docker buildx prune --filter 根据条件筛选清理 低频 可以指定时间、类型等条件进行筛选清理
docker buildx prune --keep-storage 清理至特定存储大小 低频 保留指定大小的构建缓存
docker buildx prune --all 清理所有构建缓存 低频 包括内部镜像和所有构建缓存条目
复制代码
# 清理所有构建缓存
docker buildx prune

# 清理所有构建缓存,包括内部镜像
docker buildx prune --all

# 清理构建缓存,保留最近5分钟的数据
docker buildx prune --filter "until=5m"

# 清理构建缓存,保留1GB的存储空间
docker buildx prune --keep-storage 1g

2.10、docker buildx stop

命令 作用 出现频率 备注
docker buildx stop <builder> 停止指定的 builder 实例 中频 停止 builder 实例,释放资源
docker buildx stop --all 停止所有 builder 实例 低频 一次性停止所有 builder 实例
复制代码
# 停止名为 mybuilder 的 builder 实例
docker buildx stop mybuilder

# 列出所有 builder 实例并停止
docker buildx ls -q | xargs -n 1 docker buildx stop

# 停止所有 builder 实例
docker buildx stop --all

2.11、docker buildx rm

命令 作用 出现频率 备注
docker buildx rm <builder> 删除指定的 builder 实例 中频 删除后无法再使用该实例
docker buildx rm --all 删除所有 builder 实例 低频 一次性删除所有 builder 实例
docker buildx rm -f <builder> 强制删除指定的 builder 实例 中频 即使 builder 正在运行也会被删除
复制代码
# 删除名为 mybuilder 的 builder 实例
docker buildx rm mybuilder

# 强制删除名为 mybuilder 的 builder 实例(如果正在运行也会被删除)
docker buildx rm -f mybuilder

# 删除所有 builder 实例
docker buildx rm --all

2.12、docker buildx imagetools

命令 作用 出现频率 备注
docker buildx imagetools create 创建新的镜像 低频 合并多个源镜像内容,常用于构建复杂应用
docker buildx imagetools inspect 检查 Docker 镜像的详细信息 中频 包括单平台和多平台镜像的配置、分层结构和元数据
复制代码
# 使用 docker buildx imagetools create 命令创建新镜像
docker buildx imagetools create my-multi-stage-image:latest ~/project

# 检查单平台 Docker 镜像的详细信息
docker buildx imagetools inspect hello-world

# 检查多平台 Docker 镜像的详细信息
docker buildx imagetools inspect alpine

3、docker save

命令 作用 出现频率 备注
docker save -o xxx.tar IMAGE[:TAG]... 把本地镜像打包成 tar 归档 中频 不依赖网络,离线/内网分发必备
`docker save IMAGE... gzip > xxx.tar.gz` 打包并实时压缩 低频
`docker save IMAGE docker load` 管道直连,无需中间文件 低频
docker save --help 查看全部参数 极低 参数很少,几乎用不到其它选项
复制代码
# ---------- docker save 常用示例 ----------
# 1) 打包单个镜像
docker save -o nginx_alpine.tar nginx:alpine

# 2) 一次打包多个镜像到一个 tar
docker save -o web_cache.tar redis:7 alpine:3.18

# 3) 打包并实时压缩
docker save nginx:alpine | gzip > nginx_alpine.tar.gz

# 4) 管道直连:A 机器 → B 机器,无需中间文件
docker save myapp:latest | ssh user@192.168.1.100 "docker load"

# 5) 查看 tar 包里包含哪些镜像
tar -tf web_cache.tar | grep "\.json" | head

4、docker load

Load an image from a tar archive or STDIN

命令 作用 出现频率 备注
docker load -i xxx.tar 从 tar 归档导入镜像(含 tag) 高频 docker save 配套
docker load < xxx.tar 重定向导入(同上) 中频 写法差异,效果一致
docker load --quiet 静默导入 低频 CI/CD 日志更干净
docker load(管道用法) 直接接收 stdin 流 低频 可结合 ssh/curl 实现无文件传输
复制代码
# ---------- docker load 常用示例 ----------
# 1) 从本地 tar 导入镜像
docker load -i web_cache.tar

# 2) 重定向导入(效果同上)
docker load < web_cache.tar

# 3) 静默导入(不输出详细进度)
docker load --quiet -i web_cache.tar

# 4) 管道直连:远程机器把 tar 流过来直接 load
ssh user@192.168.1.100 "cat /tmp/web_cache.tar" | docker load

# 5) 解压并导入(tar.gz 场景)
gunzip -c web_cache.tar.gz | docker load

5、docker tag

Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE

命令 作用 出现频率 备注
docker tag <src[:tag]> <dst[:tag]> 为本地镜像创建新名字/标签 高频 仅创建引用,不拷贝数据
docker tag <imageID> <dst[:tag]> 按 ID 打标签 中频 适合无原标签场景
docker tag <src> <registry>/repo:<ver> 给推送仓库做准备 高频 推送前必做
复制代码
# ---------- docker tag 常用示例 ----------
# 1) 为已有镜像 nginx:alpine 创建本地新标签
docker tag nginx:alpine mynginx:latest

# 2) 按镜像 ID 打标签(假设 ID 为 1a2b3c4d)
docker tag 1a2b3c4d myapp:v1.0.0

# 3) 为推送私有仓库打标签
docker tag myapp:v1.0.0 harbor.example.com/library/myapp:v1.0.0

# 4) 一次镜像多版本标签(方便回滚)
docker tag myapp:v1.0.0 myapp:stable
docker tag myapp:v1.0.0 myapp:1.0
docker tag myapp:v1.0.0 myapp:latest

# 5) 批量重命名脚本示例(把旧仓库名统一换成新仓库名)
for t in $(docker images --format '{{.Repository}}:{{.Tag}}' | grep '^oldrepo/'); do
    new_name=$(echo "$t" | sed 's#^oldrepo/#newrepo/#')
    docker tag "$t" "$new_name"
done

6、docker rmi

Remove one or more images

命令 作用 出现频率 备注
docker rmi <镜像:标签> 按仓库名+标签删除镜像 高频 删除所有同名标签即删除镜像
docker rmi <IMAGE_ID> 按镜像 ID 删除 高频 ID 可简写前 3 位以上
docker rmi -f <镜像> 强制删除(含正在运行的容器) 中频 会先停止并删除相关容器
docker rmi $(docker images -q) 批量删除所有本地镜像 低频 危险!请确认无重要数据
复制代码
# ---------- docker rmi 常用示例 ----------
# 1) 删除单个镜像(按仓库:标签)
docker rmi nginx:alpine

# 2) 删除单个镜像(按镜像 ID,前 4 位即可)
docker rmi 7d8e

# 3) 强制删除(即使有容器正在使用)
docker rmi -f myapp:latest

# 4) 一次删除多个镜像
docker rmi redis:7 alpine:3.18 busybox:1.35

# 5) 批量删除所有"悬空"镜像(<none>:<none>)
docker rmi $(docker images -f "dangling=true" -q)

# 6) 危险!一次性清空本地所有镜像(慎用)
# docker rmi $(docker images -q)

7、docker image

Manage images

子命令 作用 出现频率 备注
docker image ls 列出本地镜像 高频 可简写 docker images
docker image rm <镜像> 删除指定镜像 高频 docker rmi 等价
docker image prune [-a -f] 清理未被使用的镜像 中频 -a 包含非悬空镜像
docker image inspect <镜像> 查看镜像元数据 中频 JSON 格式,调试利器
docker image history <镜像> 查看镜像分层历史 低频 排查镜像大小来源
docker image tag 给镜像打标签 低频 docker tag 等价
复制代码
# ---------- docker image 常用示例 ----------
# 1) 列出本地镜像(简洁格式)
docker image ls

# 2) 仅显示镜像 ID(脚本用)
docker image ls -q

# 3) 删除指定镜像
docker image rm nginx:alpine

# 4) 强制批量删除所有悬空镜像
docker image prune -f

# 5) 强制删除所有未被容器引用的镜像(慎用)
docker image prune -a -f

# 6) 查看镜像完整元数据
docker image inspect nginx:alpine

# 7) 查看镜像分层历史(带大小)
docker image history --no-trunc nginx:alpine

# 8) 给镜像打标签(与 docker tag 等价)
docker image tag nginx:alpine harbor.example.com/library/nginx:v1

8、docker history

Show the history of an image

命令 作用 出现频率 备注
docker history <镜像> 查看镜像分层历史 中频 快速定位"镜像为何这么大"
--no-trunc 显示完整命令 低频 解决输出被截断
--format 自定义输出 低频 用于脚本或统计
复制代码
# ---------- docker history 常用示例 ----------
# 1) 查看镜像分层历史(默认表格式)
docker history nginx:alpine

# 2) 显示完整命令(不被截断)
docker history --no-trunc nginx:alpine

# 3) 仅查看镜像 ID 与大小(脚本友好)
docker history --format "table {{.ID}}\t{{.Size}}" nginx:alpine

# 4) 按层大小排序(由大到小)
docker history --format "{{.Size}}\t{{.CreatedBy}}" nginx:alpine | sort -hr

# 5) 配合 jq 统计总大小(需安装 jq)
docker history --format '{{json .}}' nginx:alpine | jq -s 'map(.Size | tonumber) | add' | numfmt --to=iec
相关推荐
苹果醋31 小时前
React Native jpush-react-native极光推送 iOS生产环境接收不到推送
java·运维·spring boot·mysql·nginx
老华带你飞1 小时前
数码论坛|基于SprinBoot+vue的数码论坛系统(源码+数据库+文档)
java·前端·数据库·vue.js·论文·毕设·数码论坛系统
葵野寺1 小时前
【JVM】深入解析Java虚拟机
java·linux·jvm·gc·垃圾回收
程序猿七度2 小时前
【FastExcel】解决ReadSheet在Map中获取对象不准确问题(已提交PR并合并到开源社区)
java·开源·fastexcel
用户84913717547163 小时前
JustAuth实战系列(第5期):建造者模式进阶 - AuthRequestBuilder设计解析
java·设计模式·架构
励志成为糕手4 小时前
从反射到方法句柄:深入探索Java动态编程的终极解决方案
java·开发语言
是乐谷4 小时前
饿了么招java开发咯
java·开发语言·人工智能·程序人生·面试·职场和发展
zhysunny4 小时前
20.万物皆可变身术:状态模式架构全景解析
java·状态模式
hongjunwu4 小时前
Java集合的遍历方式(全解析)
java·开发语言·windows