多阶段Dockerfile生成无法复制程序文件 – 访问被拒绝

我正在创build一个windows docker容器,它将用于执行一些需要安装SQL Server命令行实用程序的pipe理任务。 我的目标是使用多阶段的构build,以确保MSI /巧克力的安装cruft不包括在最终的形象。 当我执行一个docker build我得到这个错误:

 Step 8/10 : COPY --from=setup ["C:\\Program Files\\Microsoft SQL Server" "C:\\Program Files\\Microsoft SQL Server"] failed to create hash for Documents and Settings: readlink \\?\Volume{b9e10f4e-aa64-4233-a798-28aa8ac73055}\Documents and Settings: Access is denied. 

是否有可能以这种方式从Program Files中复制文件? 如何才能使这个工作?

这是我的Dockerfile:

 # Setup container installs chocolatey and sqlserver CLI tools FROM microsoft/windowsservercore:latest as setup SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] RUN Invoke-WebRequest -OutFile chocoinstall.ps1 "https://chocolatey.org/install.ps1" RUN . .\chocoinstall.ps1 RUN choco install 'sqlserver-cmdlineutils' -version '13.1' --yes # Deploy Tools image FROM microsoft/windowsservercore:latest SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] # SQL server CLI tools COPY --from=setup ["C:\\Program Files\\Microsoft SQL Server" "C:\\Program Files\\Microsoft SQL Server"] RUN $env:PATH = 'C:\\Program Files\\Microsoft SQL Server\\Client SDK\\ODBC\\130\\Tools\\Binn\\;' + $env:PATH; ENTRYPOINT ["powershell"] 

一个非常难的问题。 但是在COPY指令中添加注释“#escape =`”和一个“,”这个技巧。

 # escape=` # Setup container installs chocolatey and sqlserver CLI tools FROM microsoft/windowsservercore:latest as setup SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] RUN Invoke-WebRequest -OutFile chocoinstall.ps1 "https://chocolatey.org/install.ps1" RUN . .\chocoinstall.ps1 RUN choco install 'sqlserver-cmdlineutils' -version '13.1' --yes # Deploy Tools image FROM microsoft/windowsservercore:latest SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] # SQL server CLI tools COPY --from=setup ["C:\\Program Files\\Microsoft SQL Server", "C:\\Program Files\\Microsoft SQL Server"] RUN $env:PATH = 'C:\\Program Files\\Microsoft SQL Server\\Client SDK\\ODBC\\130\\Tools\\Binn\\;' + $env:PATH; ENTRYPOINT ["powershell"] 

(编辑:删除.dockerignore文件)