Vic*_*Xue 11 escaping docker dockerfile
我正在阅读Dockerfile Reference 的 escape 部分。在文档中,有一个示例演示了默认转义字符“\”如何在 Windows 系统中引起问题。
FROM microsoft/nanoserver
COPY testfile.txt c:\\
RUN dir c:\
Run Code Online (Sandbox Code Playgroud)
结果是:
PS C:\John> docker build -t cmd 。
将构建上下文发送到 Docker 守护进程 3.072 kB
步骤 1/2:FROM microsoft/nanoserver ---> 22738ff49c6d
步骤 2/2:复制 testfile.txt c:\RUN dir c:
GetFileAttributesEx c:RUN:系统找不到指定的文件。
PS C:\约翰>
根据我的理解, in 中的第一个反斜杠COPY testfile.txt c:\\
将转义第二个反斜杠,命令变为COPY testfile.txt c:\
。反斜杠在RUN dir c:\
命令中消失,因为它充当转义字符,这是有道理的。但是,我不确定为什么换行符也会被转义,因为 COPY 和 RUN 命令被合并为单个命令。我不是转义字符方面的专家,我可能会误解一些非常基本的东西。您能告诉我转义字符在这种情况下是如何工作的吗?提前致谢。
gre*_*ory 10
在 Windows 上使用 escape 指令可以避免这些令人头疼的问题,例如:
# escape=`
FROM microsoft/nanoserver
COPY testfile.txt c:\
RUN dir c:\
Run Code Online (Sandbox Code Playgroud)
在您的情况下,第二个斜杠正在转义换行符。因此,两条线连在一起形成:COPY testfile.txt c:\RUN dir c:
。我知道您认为第一个斜杠应该转义第二个斜杠,但这不是解析器根据文档的行为方式。
归档时间: |
|
查看次数: |
15730 次 |
最近记录: |