Docker CLI 的 docker image load 命令:从 tar 归档与 STDIN 恢复镜像与标签的完整指南
CLI开发工具【免费下载链接】cliThe Docker CLI项目地址https://gitcode.com/gh_mirrors/cli5/cli点击查看免费下载导读docker image load别名docker load是 Docker CLI 中与docker save配对的镜像迁移命令用于从 tar 归档文件支持 gzip、bzip2、xz、zstd 等压缩格式或标准输入STDIN读取镜像数据并将其连同标签一起恢复到本地 Docker 守护进程。本文以 Docker CLI 仓库中 docs/reference/commandline/image_load.md 为骨架结合 cli/command/image/load.go 的源码实现与 cli/command/image/load_test.go 的测试用例完整讲解命令用法、参数语义、平台过滤机制与底层调用链让你掌握离线分发、跨机迁移与多架构镜像选择性导入的完整方案。命令概述作用、别名与基本语法docker image load用于从 tar 归档即使被 gzip、bzip2、xz 或 zstd 压缩或 STDIN 加载镜像或仓库。它同时恢复镜像本身及其标签tags。在 Docker CLI 中该命令有两条可用路径docker image loaddocker load顶层别名从源码看命令注册在 cli/command/image/cmd.go 中通过commands.RegisterLegacy(newLoadCommand)注册并以newLoadCommand挂载到docker image子命令组之下同时保留了顶层docker load的历史用法。命令本身定义于 cli/command/image/load.go其基本语法为docker image load [OPTIONS]需要注意命令不接受位置参数源码中Args: cli.NoArgs所有输入要么通过--input指向文件要么来自 STDIN。命令选项一览以下选项表完整摘录自官方文档名称类型默认值描述-i,--inputstring空从 tar 归档文件读取而非 STDIN--platformstringSlice空仅加载指定的平台。格式为以逗号分隔的os[/arch[/variant]]列表例如linux/amd64,linux/arm64/v8-q,--quietboolfalse抑制加载过程输出从源码 cli/command/image/load.go 可以看到这三个选项被映射到loadOptions结构体type loadOptions struct { input string quiet bool platform []string }其中--platform被标记为 API 版本1.48新增flags.SetAnnotation(platform, version, []string{1.48})即只有 Docker Engine API 1.48 及以上的守护进程才支持该选项。同时--platform注册了completion.Platforms()补全函数见 cli/command/image/load.go在支持 shell 补全的终端中可以直接 Tab 补全平台字符串。从 STDIN 加载镜像当不带--input时命令从标准输入读取 tar 数据。典型用法是将docker save产生的归档通过管道直接喂给docker load或重定向本地文件$ docker save busybox busybox.tar $ docker load busybox.tar Loaded image: busybox:latest官方文档给出的示例$ docker load busybox.tar.gz Loaded image: busybox:latest $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE busybox latest 769b9341d937 7 weeks ago 2.489 MB注意归档即使经过 gzip、bzip2、xz 或 zstd 压缩也可直接加载Docker 会自动识别压缩格式。源码视角STDIN 输入的校验逻辑在 cli/command/image/load.go 的runLoad中输入源的选择逻辑非常关键var input io.Reader dockerCli.In() switch opts.input { case : // To avoid getting stuck, verify that a tar file is given either in // the input flag or through stdin and if not display an error message and exit. if dockerCli.In().IsTerminal() { return errors.New(requested load from stdin, but stdin is empty) } default: // We use sequential.Open to use sequential file access on Windows, avoiding // depleting the standby list un-necessarily. On Linux, this equates to a regular os.Open. file, err : sequential.Open(opts.input) ... input file }也就是说如果未指定--input且 STDIN 是一个终端TTY命令会直接报错requested load from stdin, but stdin is empty避免进程挂起等待永远不会到来的输入如果指定了--input则通过sequential.Open打开文件——该封装在 Windows 上使用顺序文件访问以节省系统缓存standby list在 Linux 上等价于普通的os.Open。这一错误分支在测试 cli/command/image/load_test.go 的input-to-terminal用例中被显式验证设置cli.In().SetIsTerminal(true)后执行命令断言错误信息为requested load from stdin, but stdin is empty。此外wrong-args用例验证了命令拒绝位置参数accepts no arguments。从文件加载镜像--input当镜像归档保存在磁盘文件时使用--input短选项-i显式指定$ docker load --input fedora.tar Loaded image: fedora:rawhide Loaded image: fedora:20 $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE busybox latest 769b9341d937 7 weeks ago 2.489 MB fedora rawhide 0d20aec6529d 7 weeks ago 387 MB fedora 20 58394af37342 7 weeks ago 385.5 MB fedora heisenbug 58394af37342 7 weeks ago 385.5 MB fedora latest 58394af37342 7 weeks ago 385.5 MB上面的输出清晰展示了一个核心特性单个 tar 归档可以包含多个镜像及多个标签加载后所有镜像与标签被逐一恢复。这也正是docker save支持一次导出多个镜像docker save [OPTIONS] IMAGE [IMAGE...]见 cli/command/image/save.go的原因——save 与 load 构成完整的离线镜像迁移闭环。源码视角文件打开与 quiet 自动降级在 cli/command/image/load.go 中输出行为有一个自动降级逻辑var options []client.ImageLoadOption if opts.quiet || !dockerCli.Out().IsTerminal() { options append(options, client.ImageLoadWithQuiet(true)) }即只要显式指定了--quiet或者标准输出不是终端例如输出被重定向到文件或管道加载过程的状态输出都会被自动抑制。这意味着在脚本化场景中即使不写-q也不会产生干扰性的进度输出。ImageLoadWithQuiet对应的客户端函数选项定义在 vendor/github.com/moby/moby/client/image_load_opts.go它最终写入请求体中的Quiet字段。按平台选择性加载--platform--platform选项用于在多平台multi-platform镜像归档中只加载指定的平台变体。默认情况下docker load会加载归档中存在的所有平台变体使用--platform后则只加载指定平台若给定平台不在归档中命令会报错。该选项的取值格式为os[/arch[/variant]]例如linux/amd64linux/arm64/v8架构和变体variant是可选的省略时默认取守护进程的原生架构。加载指定平台的示例从包含多个平台变体的归档中只加载linux/amd64变体$ docker image load -i image.tar --platformlinux/amd64 Loaded image: alpine:latest平台不在归档中时的报错尝试加载归档中不存在的linux/ppc64le平台$ docker image load -i image.tar --platformlinux/ppc64le requested platform (linux/ppc64le) not found: image might be filtered out源码视角平台解析与多平台组合方式--platform的类型是stringSlice因此既可以用一个参数携带逗号分隔的多个平台也可以重复传入多次。在 cli/command/image/load.go 中每个平台串通过 containerd 的platforms.Parse解析为 OCI 规范平台结构体platformList : []ocispec.Platform{} for _, p : range opts.platform { pp, err : platforms.Parse(p) if err ! nil { return fmt.Errorf(invalid platform: %w, err) } platformList append(platformList, pp) } if len(platformList) 0 { options append(options, client.ImageLoadWithPlatforms(platformList...)) }解析失败会返回invalid platform: ...错误。随后平台列表通过ImageLoadWithPlatforms定义于 vendor/github.com/moby/moby/client/image_load_opts.go作为客户端选项传递该选项仅对多平台镜像有效单一平台镜像不受影响。上述三种平台用法在测试 cli/command/image/load_test.go 中均有覆盖--platform linux/amd64单个平台--platform linux/amd64,linux/arm64/v8,linux/riscv64逗号分隔多个平台--platform linux/amd64 --platform linux/arm64/v8 --platform linux/riscv64重复传入多个平台。三个用例分别对应 golden 文件 load-command-success.with-single-platform.golden、load-command-success.with-comma-separated-platforms.golden 与 load-command-success.with-multiple-platform-options.golden。抑制输出--quiet-q/--quiet选项用于抑制加载过程的输出。如前面源码分析所示它有两种触发路径用户显式传入--quiet标准输出不是终端重定向或管道场景时自动启用。在交互终端中不加-q时命令会通过 internal/jsonstream/display.go 的Display函数逐条渲染守护进程返回的 JSON 消息流如Loaded image: ...行并正确处理上下文取消context cancellation时的事件流中断。测试 cli/command/image/load_test.go 通过 golden 文件如 load-command-success.simple.golden、load-command-success.input-file.golden验证了标准输出内容与格式的稳定性。底层调用链与错误处理综合 cli/command/image/load.godocker image load的完整执行流程为确定输入源--input指定文件sequential.Open或 STDIN终端时校验并报错组装客户端选项根据quiet/ 输出非终端决定是否ImageLoadWithQuiet(true)解析--platform列表platforms.Parse非空时追加ImageLoadWithPlatforms(...)调用dockerCli.Client().ImageLoad(ctx, input, options...)向守护进程发起加载请求通过jsonstream.Display将守护进程返回的 JSON 消息流渲染到标准输出。错误处理方面测试覆盖了以下几类典型失败场景见 cli/command/image/load_test.go传入了位置参数 →accepts no arguments未给输入且 STDIN 是终端 →requested load from stdin, but stdin is empty守护进程调用失败 → 透传底层错误平台字符串非法 →invalid platform--input指向不存在/不可打开的文件 → 透传open ...文件系统错误。实战save 与 load 的镜像离线迁移闭环docker image load最常见的实战场景是与docker image save配合在没有网络air-gapped环境或跨主机迁移时传递镜像# 在源主机导出镜像归档 $ docker image save -o myapp.tar myapp:1.0.0 # 在目标主机导入 $ docker image load -i myapp.tar Loaded image: myapp:1.0.0两者在源码上是严格对称的docker save支持--output默认写 STDOUT与--platform见 cli/command/image/save.go其--platform同样标注为 API 1.48 新增docker load则对应支持--input默认读 STDIN与--platform。因此对于多架构镜像你可以用docker save --platform linux/amd64,linux/arm64/v8精确挑选要导出的变体再用docker image load --platform linux/amd64在目标机只恢复所需平台从而大幅节省磁盘与网络开销。小结docker image load从 tar支持 gzip/bzip2/xz/zstd 压缩或 STDIN 恢复镜像及其标签无位置参数-i, --input指定归档文件缺省读 STDIN且 STDIN 为终端时会主动报错避免挂起--platformAPI 1.48支持os[/arch[/variant]]格式可逗号分隔或重复传入平台不在归档中时返回requested platform (...) not found错误-q, --quiet抑制输出输出非终端时自动静默源码实现位于 cli/command/image/load.go测试用例见 cli/command/image/load_test.go可与 cli/command/image/save.go 配合完成完整的离线镜像迁移。赞分享CLI开发工具【免费下载链接】cliThe Docker CLI项目地址https://gitcode.com/gh_mirrors/cli5/cli点击查看免费下载相关推荐Docker CLI docker image save 命令完全指南镜像导出、平台筛选与 tar 归档原理Docker CLI docker image save 命令完全指南镜像导出、平台筛选与 tar 归档原理 导读 docker image save 别名CLI开发工具Docker CLI docker context import 命令详解从 tar/zip 归档恢复 Docker ContextDocker CLI docker context import 命令详解从 tar/zip 归档恢复 Docker Context docker conteCLI开发工具Podman load 命令全解从 tar 归档、目录与 URL 恢复镜像到本地容器存储Podman load 命令全解从 tar 归档、目录与 URL 恢复镜像到本地容器存储 导读 podman load 是 Podman 镜像生命周期管理中与容器运行时云原生CLI上一篇终极京东茅台抢购神器2025年最新自动抢购脚本小白也能轻松上手下一篇Browser-Use 代理配置完整指南:3步跑通跨境验证任务创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

华为杯E题一等奖zip拆解:从数据清洗到可复现论文全流程

华为杯E题一等奖zip拆解:从数据清洗到可复现论文全流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:54:47 阅读更多 →
观点:全网致敬“GPT-2时刻“是对一个被误解模型的集体浪漫化

观点:全网致敬“GPT-2时刻“是对一个被误解模型的集体浪漫化

观点:全网致敬"GPT-2时刻"是对一个被误解模型的集体浪漫化 【免费下载链接】gpt2 项目地址: https://ai.gitcode.com/hf_mirrors/openai-community/gpt2 "GPT-2时刻"正在成为一个万能比喻。机器人公司发布模型说"迎来GPT-2时刻&qu…

2026/10/10 1:54:47 阅读更多 →
法语键盘输入全攻略:从特殊字符到AZERTY布局的跨平台方案

法语键盘输入全攻略:从特殊字符到AZERTY布局的跨平台方案

1. 法语键盘到底难在哪:先搞清楚你面对的是什么法语专业的学生,或者任何需要频繁输入法语的人,大概率都经历过这样一个阶段:明明英语打字速度还行,一切换到法语输入就变成了“二指禅”,一个字母一个字母地找…

2026/10/10 1:54:47 阅读更多 →

最新新闻

强化学习从动态规划到无模型控制:蒙特卡洛、SARSA与Q-learning详解

强化学习从动态规划到无模型控制:蒙特卡洛、SARSA与Q-learning详解

如果你是从这个系列第一篇跟过来的朋友,对 MDP、值迭代、策略迭代应该还有印象。如果没看过也没有关系,你只需要记住一件事:前面两篇讨论的算法,默认环境转移概率 p(s,r|s,a) 是已知的。真实场景里通常拿不到这个模型,…

2026/10/10 4:10:38 阅读更多 →
RLHF实战指南:从偏好数据到PPO的全流程拆解与避坑

RLHF实战指南:从偏好数据到PPO的全流程拆解与避坑

人类反馈的强化学习(RLHF)这几个字,现在几乎成了大语言模型技术讨论里的“必点菜”。但我发现一个很有意思的现象:大多数人对它的理解停留在“让模型学会说人话”这一步,真正把整个链路从头到尾跑通的人,少…

2026/10/10 4:10:38 阅读更多 →
Toad for Oracle 12 绿色版:免安装配置、连接优化与避坑指南

Toad for Oracle 12 绿色版:免安装配置、连接优化与避坑指南

简介:Toad for Oracle 12 绿色破解版 for winALL 是一套面向 Oracle 开发人员与 DBA 的图形化数据库管理工具包,支持在 Windows 全系列环境中免安装直接部署。核心功能覆盖模式浏览、SQL/PL/SQL 编辑器、对象查看与日常数据库管理,针对重复编…

2026/10/10 4:10:38 阅读更多 →
YOLOv11货架商品识别实战:从训练调参到库存自动化管理

YOLOv11货架商品识别实战:从训练调参到库存自动化管理

简介:这份PDF文档面向零售行业技术人员、计算机视觉学习者与门店数字化方案设计者,围绕YOLOv11在货架商品识别与库存自动化管理中的落地展开,帮助读者理解如何用单阶段目标检测替代低效的人工盘点与手工记录。资源包共1个PDF文件,…

2026/10/10 4:10:38 阅读更多 →
英国旅游签行程单模板:22天跨城行程的完整拆解与避坑指南

英国旅游签行程单模板:22天跨城行程的完整拆解与避坑指南

简介:这份英国旅游签证行程单模板面向准备申请英国旅游签的出行者与代办人员,用于解决行程材料格式混乱、信息缺项、逻辑不清等常见问题。模板以日期为主线,逐日列出活动安排、住宿酒店名称地址与电话、城市间交通方式及景点信息,…

2026/10/10 4:10:38 阅读更多 →
力扣73与74:矩阵置零与搜索二维矩阵的原地算法与二分查找实战

力扣73与74:矩阵置零与搜索二维矩阵的原地算法与二分查找实战

1. 题目概览:两道二维矩阵的经典关卡1.1 力扣73题到底在考什么力扣73题叫做“矩阵置零”,给定一个 m x n 的矩阵,如果某个元素为 0,则要求将该元素所在的行和列的所有元素都置为 0。这道题我第一次做的时候觉得很简单,…

2026/10/10 4:09:38 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 6:17:20 阅读更多 →