为什么docker run可以';找不到在生成过程中复制的文件

为什么docker run可以';找不到在生成过程中复制的文件,docker,nosuchfile,Docker,Nosuchfile,Dockerfile FROM centos RUN mkdir /test #its ensured that sample.sh exists where the dockerFile exists & being run COPY ./sample.sh /test CMD ["sh", "/test/sample.sh"] Docker运行命令: docker run-d-p8081:8080——名称测试-v/home/dock

Dockerfile

FROM centos

RUN mkdir /test

#its ensured that sample.sh exists where the dockerFile exists & being run
 
COPY ./sample.sh /test

CMD ["sh", "/test/sample.sh"]
Docker运行命令:

docker run-d-p8081:8080——名称测试-v/home/docker/Container\u File\u System:/Test测试:v1

日志输出:

sh: /test/sample.sh: No such file or directory
这里有两个问题

  • 输出显示sh:/test/sample.sh:没有这样的文件或目录
  • 由于我已经将一个主机文件夹映射到容器文件夹,所以我希望测试文件夹&sample.sh可以在/home/Docker/container\u File\u系统的后期运行中使用,但这并没有发生

非常感谢您的帮助。

当您将文件夹从主机映射到容器时,主机文件将在容器中可用。这意味着,如果您的主机具有文件a.txt,而容器具有文件b.txt,则当您运行容器时,文件a.txt在容器中变为可用,而文件b.txt不再可见或可访问

此外,主机中的文件b.txt在任何时候都不可用

在您的情况下,因为您的主机没有sample.sh,所以在装载目录时,sample.sh在容器中不再可用(这会导致错误)。
您要做的是将sample.sh文件复制到主机中的正确目录,然后启动容器。

问题在于卷映射。如果我创建一个卷并随后将其映射,它可以正常工作,但直接将主机文件夹映射到容器文件夹是不起作用的

下面的工作很好

docker volume create my-vol

docker run -d -p 8081:8080 --name Test -v my-vol:/test test:v1

容器文件系统文件夹是否包含sample.sh?谢谢。运行容器时,如何在主机本身中创建文件夹(在构建映像时复制这些文件夹)?