我要将文件夹d:\test
从主机操作系统(Windows)复制到docker映像。
我的Docker文件是D:\Programs>
Docker文件
FROM mcr.microsoft.com/windows/servercore:ltsc2019
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
RUN mkdir root
RUN cd root
WORKDIR /root
RUN mkdir test
COPY D:/test to /root/test
#USING 'COPY' here instead of 'ADD' because of https://stackoverflow.com/questions/24958140/what-is-the-difference-between-the-copy-and-add-commands-in-a-dockerfile
复制失败:在生成上下文中找不到文件或被.dockerignore:stat test:文件不存在
我尝试了命令将d:/test复制到/root/test
和将./test复制到/root/test
我知道发生此错误是因为我复制的路径必须相对于构建上下文(.in docker构建)。它不能是生成上下文之外的系统上的任意路径。
更新1
我将test
文件夹放置在d:\programs
中,我的Dockerfile也位于此位置,因此我现在有了以下结构:
D:\Programs
\Test
Dockerfile
然后再次运行构建命令,尝试copy test to/root/test
和copy./test to/root/test
,但都失败了,出现了前面提到的相同错误。
我假设您只是在中将
作为缩写,但我还是建议检查一下。添加到
中,将d:/test复制到/root/test
如果您确实需要d://programs
中的内容,并且不能将其移动到当前构建上下文中的文件夹中,我认为有两个常规选项:
>
更改构建上下文-我建议将构建上下文设置为d://
,并将d://
目录中除programs
之外的每个文件夹添加到.dockerignore
文件中,然后您可以从d://
中的某个子目录引用Dockerfile,并在构建时根据需要复制您的文件
在运行时创建绑定挂载-您可以在运行时将d://programs
目录映射到容器内的文件夹(/my-programs
),然后将该文件夹中的文件复制到/root/test
,或者只使用绑定挂载文件夹(/my-programs
)
如果将来可以在构建时使用绑定挂载,那么在创建docker映像时可以使用第二个选项
我的问题与这个关于将文件从容器复制到主机的问题有关;我有一个Dockerfile,它获取依赖项,从源代码编译构建工件,并运行一个可执行文件。我还想复制构建工件(在我的例子中,它是由'../target/'中的生成的,但我认为这个问题也适用于JAR、二进制文件等。 用于容器,而不是图像;我是否需要启动一个容器来从其中获取一个文件?在一个脚本中,我尝试在后台以交互模式运行,将文件复制出去,然后杀死容器
我正在编写来构建应用程序。我知道您可以使用 (请参见将文件从Docker容器复制到主机),但我只想运行 在Dockerfile中是否有一个命令可以用于从容器中复制到主机中?像的反义词吗?
我正在考虑使用Docker在持续集成(CI)服务器上构建我的依赖项,这样我就不必在代理本身上安装所有的运行时和库。 为了实现这一点,我需要将在容器中构建的构建构件复制回主机中。有可能吗?
我正在构建一个新图像,并将内容从主机操作系统文件夹D:\Programs\scrapy复制到其中,如下所示:
我正在使用docker容器来编译一段代码,我不一定要将其docker化。我已使用必要的构建工具设置了一个映像,但我希望以某种方式将编译后的文件从容器中取出,而无需使用docker cp container:/file host/file命令。换句话说,我希望自动化这个过程,以便在构建完成后,将生成的文件复制到主机。 Dockerfile
我正在编写一个Dockerfile来构建一个应用程序。我知道你可以用 (请参阅将文件从Docker容器复制到主机),但我想只运行 并让它将我的创建的构建工件转储到我的主机文件系统的某个地方。 Dockerfile中是否有可以用于从容器复制到主机的命令?与复制相反?