我有一个简单的设置,可以克隆Git存储库并编译二进制文件,然后将其复制到容器中

Dockerfile:

FROM ubuntu:16.04
RUN apt-get update && apt-get install -y <...>

RUN git clone <REPO>

WORKDIR <REPO>/build
RUN cmake ..
RUN make install

RUN ls bin
ADD bin/binaryname /

ENTRYPOINT <...>

Docker输出:
[100%] Linking CXX executable bin/binaryname
...
 ---> 4a9c6bb40214
Removing intermediate container 00bf96c84f37
Step 7 : RUN ls bin
 ---> Running in c295c1fca462
binaryname
 ---> a418c1bfa6cd
Removing intermediate container c295c1fca462
Step 8 : ADD bin/binaryname /
lstat bin/binaryname: no such file or directory

因此,基本上docker可以看到该文件,但不会添加它,为什么?

最佳答案

删除ADD指令,它应该可以工作。原因如下:

所有RUN指令都发生在正在构建的镜像中,而不是在本地计算机上。 ADD指令尝试将文件从主机文件系统复制到镜像。由于您是在镜像中构建文件bin/binaryname的,因此它在主机上的bin / binaryname下不存在。它已经存在于图像中,因为它就是构建位置。

关于docker - Docker不添加现有文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44510141/

10-16 10:07