EOSIO cleos convert 命令详解:交易与 Action 数据的打包(Pack)与解包(Unpack)
区块链【免费下载链接】eosAn open source smart contract platform项目地址https://gitcode.com/gh_mirrors/eo/eos点击查看免费下载导读cleos convert是 EOSIO 命令行工具cleos提供的交易与 Action 数据序列化转换子命令组用于在明文带签名的 JSON 交易与打包后的二进制形式packed form之间互相转换也可以在 JSON 形式的 Action 参数与 ABI 序列化后的十六进制字节串之间互相转换。在实际开发中它常用于离线构造交易、调试签名数据、解析链上抓取的打包交易、以及在不依赖链上环境的情况下验证 ABI 序列化结果。读完本篇你将掌握pack_transaction、unpack_transaction、pack_action_data、unpack_action_data四个子命令的完整用法、参数含义、典型输出与底层实现原理。概述convert 子命令组的作用在 EOSIO 区块链中交易在网络上传输、在区块中存储时都采用紧凑的二进制打包格式packed transaction而不是直接使用可读的 JSON。开发者日常构造交易时使用的cleos push transaction等命令本质上也是先完成同样的打包过程再交给节点处理。convert子命令组将这些底层序列化能力暴露给用户便于离线进行格式转换与结果核验。从源码看该子命令组定义在 programs/cleos/main.cpp 中auto convert app.add_subcommand(convert, localized(Pack and unpack transactions)); convert-require_subcommand();它本身要求必须再指定一个子命令共包含四个子命令官方文档docs/02_cleos/03_command-reference/convert/index.md对其定位为Pack and unpack transactions打包与解包交易子命令转换方向输入输出pack_transaction明文带签名 JSON → 打包形式明文 JSON 交易字符串或文件含packed_trx的打包交易 JSONunpack_transaction打包形式 → 明文带签名 JSON含packed_trx的打包交易 JSON完整明文交易 JSONpack_action_dataJSON Action 参数 → 打包形式账户名、Action 名、JSON 参数ABI 序列化后的十六进制字节串unpack_action_data打包形式 → JSON Action 参数账户名、Action 名、十六进制字节串反序列化后的 JSON 参数值得注意的一点convert命令组在执行时不需要连接keosd钱包。在 programs/cleos/main.cpp 中有明确的判断逻辑// get, version, net, convert do not require keosd if (tx_skip_sign || app-got_subcommand(get) || app-got_subcommand(version) || app-got_subcommand(net) || app-got_subcommand(convert))这意味着convert适合在无钱包、甚至离线环境下使用除--pack-action-data/--unpack-action-data这两个需要nodeos提供 ABI 的选项外详见下文。pack_transaction从明文带签名 JSON 到打包形式参数与选项pack_transaction的官方文档位于 docs/02_cleos/03_command-reference/convert/pack_transaction.md其参数定义如下位置参数PositionalstransactionTEXT必填明文带签名的交易 JSON可以是一段 JSON 字符串也可以是一个 JSON 文件的路径。源码中使用json_from_file_or_string()统一处理这两种输入方式见 programs/cleos/main.cpp。选项Options-h, --help打印帮助信息并退出。--pack-action-data打包交易内所有 Action 的 data 字段需要与nodeos交互即需要链上提供对应合约的 ABI。若交易中 action 的data字段是 JSON 对象而非十六进制字符串就必须加上此选项。命令示例官方文档给出的示例将一个含eosio::newaccountAction 的明文交易打包cleos convert pack_transaction { expiration: 2018-08-02T20:24:36, ref_block_num: 14207, ref_block_prefix: 1438248607, max_net_usage_words: 0, max_cpu_usage_ms: 0, delay_sec: 0, context_free_actions: [], actions: [{ account: eosio, name: newaccount, authorization: [{ actor: eosio, permission: active } ], data: 0000000000ea305500a6823403ea30550100000001000240cc0bf90a5656c8bb81f0eb86f49f89613c5cd988c018715d4646c6bd0ad3d8010000000100000001000240cc0bf90a5656c8bb81f0eb86f49f89613c5cd988c018715d4646c6bd0ad3d801000000 } ], transaction_extensions: [] }输出为一个含signatures、compression、packed_context_free_data、packed_trx四个字段的打包交易 JSON{ signatures: [], compression: none, packed_context_free_data: , packed_trx: 8468635b7f379feeb95500000000010000000000ea305500409e9a2264b89a010000000000ea305500000000a8ed3232660000000000ea305500a6823403ea30550100000001000240cc0bf90a5656c8bb81f0eb86f49f89613c5cd988c018715d4646c6bd0ad3d8010000000100000001000240cc0bf90a5656c8bb81f0eb86f49f89613c5cd988c018715d4646c6bd0ad3d80100000000 }示例中的明文交易data字段本身就是十六进制字节串手动 ABI 编码好的 newaccount 参数因此无需--pack-action-data也能完成打包。如果data是 JSON 对象如{creator:eosio, ...}则必须使用--pack-action-data。底层实现源码回调逻辑见 programs/cleos/main.cpp当指定--pack-action-data时先通过abi_serializer::from_variant()将 JSON 变体反序列化为signed_transaction期间会用 ABI 把 action 的 JSON data 编码为二进制再构造packed_transaction_v0输出未指定该选项时直接把 JSON 变体转为signed_transaction再包装为packed_transaction_v0。若此时交易中的 data 为 JSON 对象而非已编码字节串会抛出transaction_type_exception错误信息为Fail to convert transaction, --pack-action-data likely needed——这正是在提示你需要使用--pack-action-data选项。打包统一采用packed_transaction_v0::compression_type::none不压缩进行封装输出格式为带缩进的 JSON。unpack_transaction从打包形式还原明文带签名 JSON参数与选项unpack_transaction的官方文档位于 docs/02_cleos/03_command-reference/convert/unpack_transaction.md是pack_transaction的逆向操作。位置参数transactionTEXT必填打包交易 JSON字符串或文件路径必须包含packed_trx字段可选包含compression、signatures、packed_context_free_data等字段。选项-h, --help打印帮助信息并退出。--unpack-action-data解包交易内所有 Action 的 data 字段将二进制 data 反序列化为可读 JSON需要与nodeos交互。命令示例以下示例把一个带签名、带打包体的交易 JSON 解包为明文形式cleos convert unpack_transaction { signatures: [ SIG_K1_KmRbWahefwxs6uyCGNR6wNRjw7cntEeFQhNCbyg8S92Kbp7zdSSVGTD2QS7pNVWgcU126zpxaBp9CwUxFpRwSnfkjd46bS ], compression: none, packed_context_free_data: , packed_trx: 8468635b7f379feeb95500000000010000000000ea305500409e9a2264b89a010000000000ea305500000000a8ed3232660000000000ea305500a6823403ea30550100000001000240cc0bf90a5656c8bb81f0eb86f49f89613c5cd988c018715d4646c6bd0ad3d8010000000100000001000240cc0bf90a5656c8bb81f0eb86f49f89613c5cd988c018715d4646c6bd0ad3d80100000000 }输出为完整的明文交易 JSON。可以看到解包后的交易同时保留了输入中的signatures并补出了context_free_data字段注意它是明文交易反序列化后的标准字段值为空数组{ expiration: 2018-08-02T20:24:36, ref_block_num: 14207, ref_block_prefix: 1438248607, max_net_usage_words: 0, max_cpu_usage_ms: 0, delay_sec: 0, context_free_actions: [], actions: [{ account: eosio, name: newaccount, authorization: [{ actor: eosio, permission: active } ], data: 0000000000ea305500a6823403ea30550100000001000240cc0bf90a5656c8bb81f0eb86f49f89613c5cd988c018715d4646c6bd0ad3d8010000000100000001000240cc0bf90a5656c8bb81f0eb86f49f89613c5cd988c018715d4646c6bd0ad3d801000000 } ], transaction_extensions: [], signatures: [ SIG_K1_KmRbWahefwxs6uyCGNR6wNRjw7cntEeFQhNCbyg8S92Kbp7zdSSVGTD2QS7pNVWgcU126zpxaBp9CwUxFpRwSnfkjd46bS ], context_free_data: [] }底层实现源码回调逻辑见 programs/cleos/main.cpp先用json_from_file_or_string()读取 JSON通过fc::from_variantpacked_transaction_v0()反序列化为packed_transaction_v0再调用get_signed_transaction()得到明文signed_transaction若指定--unpack-action-data则通过abi_serializer::to_variant()输出此时 action 的 data 会反序列化为可读 JSON 对象否则直接输出signed_transaction变体此时 data 保持十六进制字符串原样。需要注意解包后的data默认仍然是十六进制编码的原始字节串只有显式加上--unpack-action-data才会变成 JSON 对象。这与文档示例中展示的十六进制输出一致。pack_action_data将 JSON Action 参数编码为十六进制字节串参数pack_action_data的官方文档位于 docs/02_cleos/03_command-reference/convert/pack_action_data.md。位置参数三个均必填accountTEXT托管合约的账户名即合约所在的账户。nameTEXT该 Action 调用的合约函数名。unpacked_action_dataTEXT以 JSON 形式表达的 Action 参数。选项-h, --help打印帮助信息并退出。命令示例官方文档示例将unlinkauth的 JSON 参数编码为字节串cleos convert pack_action_data eosio unlinkauth {account:test1, code:test2, type:eosioeosio}输出十六进制字节串000000008090b1ca000000000091b1ca000075982aea3055底层实现与 ABI 依赖源码回调见 programs/cleos/main.cpp核心是调用variant_to_bin()packed_action_data_string variant_to_bin(name(unpacked_action_data_account_string), name(unpacked_action_data_name_string), unpacked_action_data_json);而variant_to_bin()的实现位于 programs/cleos/main.cppbytes variant_to_bin( const account_name account, const action_name action, const fc::variant action_args_var ) { auto abis abi_serializer_resolver( account ); FC_ASSERT( abis, No ABI found for ${contract}, (contract, account)); auto action_type abis-get_action_type( action ); FC_ASSERT( !action_type.empty(), Unknown action ${action} in contract ${contract}, (action, action)( contract, account )); return abis-variant_to_binary( action_type, action_args_var, abi_serializer::create_yield_function( abi_serializer_max_time ) ); }从源码可以看出关键依赖该命令需要先获取到account对应合约的 ABI通过abi_serializer_resolver本质上从nodeos拉取链上 ABI然后根据 Action 名在 ABI 中查找对应的 action typestruct再按该结构对 JSON 参数做二进制序列化。如果找不到 ABI 或 Action 类型会分别抛出No ABI found for ${contract}与Unknown action ${action} in contract ${contract}断言错误。因此该命令虽然不需要keosd但仍需要可用的nodeos连接来提供 ABI 数据。unpack_action_data将十六进制字节串反序列化为 JSON 参数参数unpack_action_data的官方文档位于 docs/02_cleos/03_command-reference/convert/unpack_action_data.md是pack_action_data的逆向操作。位置参数三个均必填accountTEXT托管合约的账户名。nameTEXT该 Action 调用的合约函数名。packed_action_dataTEXT以打包十六进制字节串形式表达的 Action 数据。选项-h, --help打印帮助信息并退出。命令示例官方文档示例将pack_action_data的输出原样还原为 JSONcleos convert unpack_action_data eosio unlinkauth 000000008090b1ca000000000091b1ca000075982aea3055输出{ account: test1, code: test2, type: eosioeosio }底层实现源码回调见 programs/cleos/main.cppEOS_ASSERT( packed_action_data_string.size() 2, transaction_type_exception, No packed_action_data found ); vectorchar packed_action_data_blob(packed_action_data_string.size()/2); fc::from_hex(packed_action_data_string, packed_action_data_blob.data(), packed_action_data_blob.size()); fc::variant unpacked_action_data_json bin_to_variant(name(packed_action_data_account_string), name(packed_action_data_name_string), packed_action_data_blob); std::cout fc::json::to_pretty_string(unpacked_action_data_json) std::endl;实现要点先断言输入长度至少为 2即至少 1 个字节否则抛出No packed_action_data found将十六进制字符串转为字节数组fc::from_hex调用bin_to_variant()反序列化。与variant_to_bin()对称bin_to_variant()见 programs/cleos/main.cpp同样需要先解析合约 ABI、定位 action type再通过abis-binary_to_variant()把二进制数据还原为 JSON 变体最终以带缩进格式打印。同样地该命令也依赖nodeos提供对应合约的 ABI。实战场景与使用建议场景一离线构造与核验交易pack_transaction/unpack_transaction可以在不连接钱包的情况下完成交易格式的转换适合以下流程手动构造明文交易 JSON或从签名工具得到带签名的明文交易用pack_transaction打包得到可直接随cleos push transaction的打包体或用于网络传输的紧凑形式从区块/日志中拿到打包交易后用unpack_transaction还原为可读的明文 JSON 进行审计、比对签名或进一步调试。场景二ABI 序列化结果验证pack_action_data/unpack_action_data互为逆运算常用于在构造push action之前先本地验证 JSON 参数能否按 ABI 正确编码观察编码后的十六进制内容是否符合预期从链上原始交易或区块数据中提取某个 action 的二进制 data 后反序列化为 JSON 以便阅读与分析手工核对合约开发者文档中的 ABI 结构与实际编码结果是否一致。注意事项四个子命令的输入均支持JSON 字符串或JSON 文件路径两种形式由json_from_file_or_string()见 programs/cleos/main.cpp自动识别只要输入不是以{或[开头且对应路径是存在的文件就会尝试从文件读取。pack_transaction与unpack_transaction默认不重新编码/解码 action 的 datadata 始终以十六进制原样传递需要把 JSON data 与二进制 data 互相转换时必须显式使用--pack-action-data/--unpack-action-data且此时要求nodeos在线可查询 ABI。pack_action_data/unpack_action_data必须依赖链上 ABI因此需要nodeos连接通过 cleos 的--url选项指定节点地址但无需keosd。打包统一采用compression_type::none即cleos convert本身不做 zlib 压缩实际广播交易时的压缩与否由节点/客户端配置决定。总结cleos convert子命令组将 EOSIO 交易与 Action 数据的序列化能力以命令行形式暴露出来pack_transaction/unpack_transaction处理整个交易在明文 JSON 与打包二进制packed_trx之间的转换pack_action_data/unpack_action_data处理单个 Action 参数在 JSON 与 ABI 编码十六进制字节串之间的转换四个命令均不需要keosd钱包涉及 ABI 序列化/反序列化--pack-action-data、--unpack-action-data及两个 action data 子命令时才需要nodeos提供合约 ABI。其底层实现集中在 programs/cleos/main.cpp 的convert子命令注册代码中核心依赖packed_transaction_v0、abi_serializer::from_variant/to_variant、variant_to_bin/bin_to_variant等序列化设施。对于需要深度调试交易数据、离线构造交易或验证 ABI 编码的开发者convert是不可多得的底层工具箱。赞分享区块链【免费下载链接】eosAn open source smart contract platform项目地址https://gitcode.com/gh_mirrors/eo/eos点击查看免费下载相关推荐EOSIO cleos convert pack_transaction 详解将普通签名交易 JSON 打包为 packed 形式EOSIO cleos convert pack_transaction 详解将普通签名交易 JSON 打包为 packed 形式 本文讲解 EOSIO 节点区块链EOSIO cleos convert pack_action_data 命令详解将 JSON 动作数据打包为十六进制字节串EOSIO cleos convert pack_action_data 命令详解将 JSON 动作数据打包为十六进制字节串 导读 cleos convert区块链cleos convert unpack_transaction 命令详解将打包交易还原为明文签名 JSONcleos convert unpack_transaction 命令详解将打包交易还原为明文签名 JSON cleos convert unpack_tra区块链创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

EMC检测费用七层拆解:从标准、场地到隐性失败成本

EMC检测费用七层拆解:从标准、场地到隐性失败成本

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

2026/9/24 4:24:09 阅读更多 →
开源AI自动化模板:笔记整理、周报生成、架构图绘制一条流水线搞定

开源AI自动化模板:笔记整理、周报生成、架构图绘制一条流水线搞定

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

2026/9/24 4:24:08 阅读更多 →
I2C物理层深度解析:开漏、上拉与多主仲裁原理

I2C物理层深度解析:开漏、上拉与多主仲裁原理

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

2026/9/24 4:23:08 阅读更多 →

最新新闻

SSM毕业设计-基于 SSM 框架的电脑配件商城管理系统的设计与实现 基于 Vue 的电脑配件线上购物平台(源码+LW+部署文档+全bao+远程调试+代码讲解等)

SSM毕业设计-基于 SSM 框架的电脑配件商城管理系统的设计与实现 基于 Vue 的电脑配件线上购物平台(源码+LW+部署文档+全bao+远程调试+代码讲解等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/24 5:06:37 阅读更多 →
TEN Framework Node.js 语音助手示例解析:从快速启动到实时对话源码实现

TEN Framework Node.js 语音助手示例解析:从快速启动到实时对话源码实现

人工智能AI Agent多模态语音AI 应用 【免费下载链接】ten-framework Open-source framework for conversational voice AI agents 项目地址: https://gitcode.com/TEN-framework/ten-framework 点击查看 免费下载 导读 本文以 ai_agents/agents/examples/voice-as…

2026/9/24 5:06:37 阅读更多 →
恒流源电路选型指南:六种经典方案对比与工程实践

恒流源电路选型指南:六种经典方案对比与工程实践

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

2026/9/24 5:06:37 阅读更多 →
企业即时通讯平台选型:从工作流程出发,避开功能清单陷阱

企业即时通讯平台选型:从工作流程出发,避开功能清单陷阱

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

2026/9/24 5:06:37 阅读更多 →
LCR表测电容三种方法详解:串联、并联与交流响应法对比

LCR表测电容三种方法详解:串联、并联与交流响应法对比

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

2026/9/24 5:06:37 阅读更多 →
Kubernetes 集群中 CoreDNS 的部署与配置:从 kube-dns 平滑迁移的完整指南

Kubernetes 集群中 CoreDNS 的部署与配置:从 kube-dns 平滑迁移的完整指南

教程云原生容器编排 【免费下载链接】kubernetes-handbook Kubernetes 架构与生态:从云原生到 AI 原生基础设施的构建指南 项目地址: https://gitcode.com/gh_mirrors/ku/kubernetes-handbook 点击查看 免费下载 CoreDNS 是 CNCF 托管的开源 DNS 服务器…

2026/9/24 5:05:37 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →