#1286·cli

通过行续行声明的多变量 ARG 丢失了第二个变量

作者: yukihiko-shinoda创建于 2026年8月24日更新于 2026年9月1日

□ 总结

当一个 Dockerfile 声明两个“ ARG” 使用带有反斜线连续的单一指令时( 有效, 真实的 Docker/ BuildKit 语法) :

  • *%docker文件 ARG VERSION 联合国大学=x
    VERSION BASE 最新版本 从高山:${verSION BASE}

`Docker 建设 ' 将`${VERSION-BASE}确定为`最晚'。 但QQDevcontainers/cli'自己的轻量级多克文件扫描仪(在引用真实建筑之前曾用于预选底图细节)从未将"VERSION-BASE"视为一个被宣布的"ARG",因此"${VERSION BASE}`'决心用**空弦**. 图像参考变为“高原:”(无标记),被Docker守护进程拒绝为“无效参考格式”。 在我们的案件中,在实际建造(本来会成功)之前, " 在集装箱中重新开放 " 已彻底失败。

□ 环境

- 扩建集装箱:0.466.0
- VS代码:1.134.0
- `@(散装)
- Docker 台式机:4.87.0 (发动机 29.7.2)
- 马可斯 (arm64)

□ 最小复制

`.devcontainer/Dockerfile':
* *%docker文件
ARG VERSION 联合国大学=x \
VERSION BASE 最新版本
从高山:${verSION BASE}

`.depcontainer/depcontainer.json': 贾森克 { "名":"arg-continuation-repro","ar"作"相克". "Docker ConfoseFile":". /Docker-compose.yml",". "服务":"网络", "工作空间":"/工作空间" {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?


`Docker-组成.yml':
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
服务:
网络 :
构建 :
语境:.
dockerfile:.devcontainer/Dockerfile (中文(简体) ).
参数 :
VERSION BASE:"3.20" (中文(简体) ).
命令: ["睡眠","无限"]

步骤 :

  1. 将上述三个文件保存在一个空文件夹中。
  2. 在VS代码中打开文件夹并运行Dev集装箱:在集装箱中重新打开

□ 预期结果

集装箱使用 " 高原:3.20 " (取自 " building.args " 的首字母)或 " 高原:latest " (多克文件默认)建造,无论哪种方式,都是有效的标记。

□ 实际结果(来自我们的真正项目,同根原因,不同图像名称)

[.]起步:跑:Docker检查-类型图像后期/相机:
[...] 停 (11 ms): 跑: Docker检查 -- 类型图像后期/相机:
[......]获取图像细节出错:没有找到Docker.io/futureys/gatsby的列表 :
[.]起步:跑:Docker拉出期货/相接:
[...] 无效的参考格式
[...] 停 (137 ms):跑:Docker拉出期货/相机:
[......] 重试( 尝试 0) 有错误
'命令失败: Docker 牵引期货/相机:
'
... (重复1-4,同样的错误).
[...] 命令失败: Docker检查 -- -- 类型图像后期/相机:
[...] [
守护进程的错误响应: 无效的引用格式

[...] 命令失败: Docker 牵引期货/相机:
错误: 命令失败: Docker 牵引期货/相机 :

" 在集装箱中重新开放 " 在真正使用 " Docker " 构件之前未能实现这一错误,尽管 " Docker " 在同一多克文件(Dev集装箱外)上成功并正确解决了阿根廷问题。

□ 根源

捆绑的 " devCtainersSpecCLI.js " 将 ARG/ENV/USER 声明与此regex(用于计算引用的 " ARG " 的默认值) . . . . . . .

内容来源: devcontainers/cli