我想在构建 docker 映像并使用如下命令时在 C 盘中创建一个文件
RUN mkdir "C:\Program Files\Microsoft Passport RPS"
Run Code Online (Sandbox Code Playgroud)
但它会抛出错误:
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
Run Code Online (Sandbox Code Playgroud)
尝试使用正斜杠和反斜杠来执行上述命令。
我尝试了多个其他命令,如下所示:
ENV PATH_WITH_SPACE "C:/Program Files/Microsoft Passport RPS"
RUN mkdir $[PATH_WITH_SPACE]
RUN mkdir ["C:\Program Files\Microsoft Passport RPS"]
Run Code Online (Sandbox Code Playgroud)
你能帮我提供适当的命令吗?
小智 6
遇到同样的问题。没有一个答案对我有用。我终于通过使用`逃离空间来让它工作了
RUN mkdir "C:\Program` Files\Microsoft` Passport` RPS"
COPY . "C:\Program` Files\Microsoft` Passport` RPS"
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用 Shell,并显式声明转义
# 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'
Run Code Online (Sandbox Code Playgroud)
小智 0
你必须逃离这个空间,有些像:
RUN mkdir "C:\Program Files\Microsoft\ Passport\ RPS"
Run Code Online (Sandbox Code Playgroud)
或者使用JSON format:
RUN ["mkdir", "C:\\Program Files\\Microsoft\ Passport\ RPS"]
Run Code Online (Sandbox Code Playgroud)
注意:使用JSON format是转义反斜杠所必需的。这在 Windows 上尤其重要,其中反斜杠是路径分隔符。
| 归档时间: |
|
| 查看次数: |
9471 次 |
| 最近记录: |