You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Windows Docker镜像中使用虚拟G盘构建失败问题咨询

问题原因

你操作的核心错误是VOLUME指令的放置顺序不符合Docker构建的规则。
Dockerfile中声明VOLUME后,所有后续构建步骤对该路径的写入操作都不会被持久化到镜像层:每执行完一个RUN指令进入下一个构建层时,声明为卷的路径会被重置为空。
这就导致你第一个RUN步骤下载到G盘的文件,在第二个RUN步骤启动时已经被清空,自然会提示找不到对应文件。而容器启动后exec进入操作时,卷处于运行时可写持久化状态,所以操作可以正常执行。

修复方案

方案1:调整VOLUME指令位置

将VOLUME指令移动到所有对G盘的写入操作完成之后即可,修改后的Dockerfile示例如下:

FROM mcr.microsoft.com/windows/servercore:20H2

# 先执行所有G盘写入操作
RUN powershell wget http://some.url/file.zip -OutFile G:\file.zip
RUN tar -xf G:\file.zip -C G:

# 所有写入完成后再声明卷
VOLUME "G:"

方案2:删除VOLUME指令(无需对外暴露卷时推荐)

如果你完全不需要将G盘作为卷挂载到外部,只是镜像内部需要使用G盘路径,可以直接删除VOLUME指令,通过注册表映射创建虚拟G盘即可,示例如下:

FROM mcr.microsoft.com/windows/servercore:20H2

# 创建G盘映射(将G盘指向C盘的g_drive目录)
RUN powershell New-Item -Path C:\g_drive -ItemType Directory -Force; `
    New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices' -Name 'G:' -Value '\??\C:\g_drive' -PropertyType String

# 正常操作G盘即可
RUN powershell wget http://some.url/file.zip -OutFile G:\file.zip
RUN tar -xf G:\file.zip -C G:

内容的提问来源于stack exchange,提问作者geanakuch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:45:04