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
命令
作用
出现频率
备注
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