windows - 带有 Windows 路径的 dockerfile

标签 windows bash docker

我想为构建镜像 docker 启动 COPY 命令 dockerfile,并将 bash 文件从主机(windows 10)复制到 ubuntu 镜像,如下所示:

COPY "C:\toto\directory_good\base.sh" /home/docker/scripts/base.sh

我尝试了很多可能性,但我总是得到相同的错误信息:

lstat C:\base.sh: no such file or directory

我想在我的 Windows 10 操作系统中使用一些 bash 文件来供应和配置我的容器 docker。

在 Dockerfile 中写入路径窗口的正确方法是什么。您是否有示例可以更深入地了解如何做到这一点?

最佳答案

使用相对路径(不是用 c:\完全限定,而是相对于构建目录)并切换到正斜杠:

COPY scripts/base.sh /home/docker/scripts/base.sh

当你执行 docker build -t myimg:latest . 时,最后的 . 告诉 docker 客户端发送当前目录(不包括 中列出的任何内容) .dockerignore) 到 docker 引擎进行构建。 COPYADD 命令不能包含该目录中未包含的任何内容。标准过程是将您的 Dockerfile 和所有需要的依赖项放在一个文件夹中,然后在该文件夹中进行构建。

另请注意,1.12 添加了将转义字符从 Linux/Unix 使用的反斜杠更改为反引号的功能。这是在 Dockerfile 顶部的特殊转义指令中定义的,前缀为 #。我不建议对您为 Linux 主机构建的镜像执行此操作:

# escape=`

# Example Dockerfile with escape character changed

FROM windowsservercore
COPY testfile.txt c:\
RUN dir c:\

关于windows - 带有 Windows 路径的 dockerfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39664808/

相关文章:

perl - 转义嵌套 shell/perl 脚本中的空格

linux - 下载多个文件,具有不同的最终名称

linux - Bash 命令如果命令成功

node.js - 在一个 docker 容器中同时启动两个 Node 脚本

c# - 为windows窗体应用程序计算mysql数据库中一列的平均值

c++ - 在 Windows 上处理用户 session 的关闭状态?

java - 如何将 window 带到前面?

node.js - 使用 dockerfile 构建时出现 "can' t cd"错误

docker - Visual Studio Code Remote - 容器 - 更改外壳

更改指针时 C++ 指针中断