无法在目录名中有空格的Dockerfile中执行RUN mkdir
我想在C驱动器中创建一个文件,同时构建docker映像并使用如下命令无法在目录名中有空格的Dockerfile中执行RUN mkdir,docker,dockerfile,Docker,Dockerfile,我想在C驱动器中创建一个文件,同时构建docker映像并使用如下命令 RUN mkdir "C:\Program Files\Microsoft Passport RPS" 但这会带来错误: Step 6/6 : RUN mkdir "C:\Program Files\Microsoft Passport RPS" ---> Running in ab58c6f2948d [91mmkdir : A positional parameter cannot be found that a
RUN mkdir "C:\Program Files\Microsoft Passport RPS"
但这会带来错误:
Step 6/6 : RUN mkdir "C:\Program Files\Microsoft Passport RPS"
---> Running in ab58c6f2948d
[91mmkdir : A positional parameter cannot be found that accepts argument 'Files\Microsoft'.
At line:1 char:76
+ ... e = 'SilentlyContinue'; mkdir C:\Program Files\Microsoft Passport RPS
[0m[91m+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[0m[91m + CategoryInfo : InvalidArgument: (:) [mkdir], ParentContainsErro
[0m[91m rRecordException
+ FullyQualifiedErrorId : PositionalParameterNotFound,mkdir
使用正斜杠和反斜杠尝试上述命令
我已尝试了多个其他命令,如下所示:
ENV PATH_WITH_SPACE "C:/Program Files/Microsoft Passport RPS"
RUN mkdir $[PATH_WITH_SPACE]
RUN mkdir ["C:\Program Files\Microsoft Passport RPS"]
你能帮我发出适当的命令吗?你必须逃离空间,比如:
RUN mkdir "C:\Program Files\Microsoft\ Passport\ RPS"
或者使用JSON格式
:
RUN ["mkdir", "C:\\Program Files\\Microsoft\ Passport\ RPS"]
使用
JSON格式
是避免反斜杠的必要条件。这在反斜杠作为路径分隔符的Windows上尤其重要。我们可以使用PowerShell命令创建带有空格的文件夹
试试这个:
RUN powershell -Command New-Item -Path 'C:\Program Files\Microsoft Passport RPS' -ItemType Directory
它工作 遇到了同样的问题。没有一个答案对我有用。 我最终通过逃离太空和`
RUN mkdir "C:\Program` Files\Microsoft` Passport` RPS"
COPY . "C:\Program` Files\Microsoft` Passport` RPS"
另一种方法是使用Shell,并显式地声明escape
谢谢你的回复。我尝试了这两个命令,但都抛出了错误:在7cfaf9384302中运行[“mkdir”,“C:\\Program Files\\Microsoft\Passport\RPS”]-->$ProgressPreference='SilentlyContinue';[mkdir,C:\\Program Files\\…Missing]位于属性或类型文字的末尾。您要在主机或映像中的何处创建目录?请把你的档案贴出来
# escape=`
FROM microsoft/nanoserver
SHELL ["powershell","-command"]
RUN New-Item -ItemType Directory C:\Example
ADD Execute-MyCmdlet.ps1 c:\example\
RUN c:\example\Execute-MyCmdlet -sample 'hello world'