0

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

日志输出:

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

这里有2个问题。

  • 输出显示 sh: /test/sample.sh: No such file or directory
  • 由于我已将主机文件夹映射到容器文件夹,因此我期望测试文件夹和 sample.sh 可在 /home/Docker/Container_File_System 运行后使用,但没有发生

任何帮助表示赞赏。

4

2 回答 2

1

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

此外,文件 b.txt 随时在主机中不可用。

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

于 2021-03-08T17:17:02.713 回答
0

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

下面工作正常

docker volume create my-vol

docker run -d -p 8081:8080 --name Test -v my-vol:/test test:v1
于 2021-03-11T18:14:55.377 回答