为什么Docker运行无法找到在构建期间复制的文件

vh0rcniy  于 2022-11-03  发布在  Docker
关注(0)|答案(2)|浏览(249)

停靠文件

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 -p 8081:8080 --name Test -v /home/Docker/Container_File_System:/test test:v1

日志输出:

sh: /test/sample.sh: No such file or directory

这里有两个问题。

  • 输出显示sh:/test/sample.sh:没有这样的文件或目录
  • 由于我已将主机文件夹Map到容器文件夹,因此我希望测试文件夹和sample.sh在运行后在/home/Docker/Container_File_System中可用,但这并没有发生

任何帮助都是感激不尽的。

odopli94

odopli941#

将文件夹从主机Map到容器时,主机文件在容器中变为可用。这意味着,如果主机具有文件a.txt,而容器具有文件b.txt,则运行容器时,文件a.txt在容器中变为可用,而文件b.txt不再可见或不可访问。
此外,文件b.txt在任何时候都无法在主机中使用。
在您的示例中,由于主机上没有sample.sh,因此在装载该目录时,容器中不再有sample.sh(这会导致错误)。您需要做的是将sample.sh文件复制到主机上的正确目录中,然后启动容器。

h7wcgrx3

h7wcgrx32#

问题出在卷Map中。如果我创建一个卷并随后Map它,它工作正常,但直接Map主机文件夹到容器文件夹不起作用。
以下工作正常

docker volume create my-vol

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

相关问题