如何_directly_将文件复制到Windows容器中的“Program Files(x86)”文件夹?

时间:2017-03-25 22:32:28

标签: docker dockerfile

我的问题特定于Docker for Windows。我在Windows 10 Pro x64上使用的版本是17.03.1-ce-rc1-win3(10625)。

我正在尝试创建一个图像,我需要将文件夹复制到基于microsoft / dotnet-framework:3.5 image的容器中的“Program Files(x86)”文件夹中。

我的Dockerfile非常简单......

# escape=`

FROM microsoft/dotnet-framework:3.5

COPY ["TestFolder", "C:\Program Files (x86)\TestFolder"]

正在运行docker build,我结束了

Step 2/2 : COPY ["TestFolder", "C:\Program Files (x86)\TestFolder"]
GetFileAttributesEx C:\Program: The system cannot find the file specified.

看起来docker错误地停止在第一个空格处解析目标名称。但是,此COPY ["<src>", ..."<dest>"]正是处理包含空格(ref)的路径的语法。如果我使用任何其他文件夹名称,例如“Foo Bar”,COPY指令就会按预期工作。

所以我目前的解决方法是首先使用WORKDIR将工作目录更改为“Prog ...(x86)”文件夹,然后执行COPY而不显式提供完整的dest路径。

但我真的想知道我是否对COPY指令做了任何错误。

感谢。

3 个答案:

答案 0 :(得分:5)

你必须在大括号内使用双反斜杠

FROM microsoft/windowsservercore

COPY ["test.txt", "c:\\program files\\WindowsPowerShell\\Modules\\test.txt"]

它被解释为JSON。

答案 1 :(得分:0)

按如下所示用正斜杠更改反斜杠,双反斜杠不再对我有用,但下面的应该这样做。

COPY ["TestFolder", "C:/Program Files (x86)/TestFolder"]

答案 2 :(得分:0)

按如下所示用正斜杠更改反斜杠,双反斜杠不再对我有用,但下面的应该这样做。

COPY ["TestFolder", "C:/Program Files (x86)/TestFolder"]