【问题标题】:bash file in docker isn't executingdocker中的bash文件没有执行
【发布时间】:2018-07-18 01:02:52
【问题描述】:

我希望我的 bash 文件在我运行 docker 映像时运行,所以首先我在一个新目录中创建了 Dockerfile,比如demo,在那个目录演示中我创建了一个新目录home,在那个目录中我有我的 bash 文件 - testfile.sh。 这是我的 docker 文件 -

FROM ubuntu
MAINTAINER Aman Kh
COPY . /home
CMD /home/testfile.sh

关于使用命令构建它 - sudo docker build -t amankh99/hello . 收到以下输出 -

Sending build context to Docker daemon 3.584kB
Step 1/4 : FROM ubuntu
—> 0458a4468cbc
Step 2/4 : MAINTAINER Aman Kh
—> Using cache
—> 98fbe31ed233
Step 3/4 : COPY . /home
—> Using cache
—> 7e52ff3439e2
Step 4/4 : CMD /home/testfile.sh
—> Using cache
—> 1d2660df6387
Successfully built 1d2660df6387
Successfully tagged amankh99/hello:latest

但是当我用命令运行它时

sudo docker run --name test -it amankh99/hello

它说

bin/sh: 1: /home/testfile.sh: 未找到

构建成功后为什么找不到文件。 我想在图像中转换这个容器并希望在 docker hub 上推送,这样当我可以在运行 hello-world(sudo docker run hello-world) 时使用简单的运行命令运行它时,我会执行我的 bash 文件,那么我可以对 dockerfile 进行哪些更改来实现这一点。

【问题讨论】:

  • RUN chmod +x /home/testfile.sh 复制后
  • @aerokite:如果该模式不可执行,它将给出:/bin/sh: 1: /home/testfile.sh: Permission denied
  • 看起来testfile.sh 与您的 Dockerfile 不在同一目录中。试试:sudo docker run -it amankh99/hello /bin/bash -c "ls -l /home".
  • 是的..你是对的..
  • 复制后可以查看RUN ls -la /home吗?

标签: bash shell ubuntu docker


【解决方案1】:

OP 的描述

我在一个新目录中创建了 Dockerfile,比如 demo 并且在那个目录中我创建了一个新目录 home 并且在那个目录中我有我的 bash 文件 - testfile.sh.

所以根据你的描述

demo/
+--- Dockerfile
+--- home/
     +--- testfile.sh

您需要将home目录复制到/home

FROM ubuntu
COPY home /home
CMD /home/testfile.sh

如果您这样做COPY . /home,您的home/testfile.sh 将被复制到/home/home/testfile.sh

如果您只想复制您的testfile.sh,请执行此操作

COPY home/testfile.sh /home/

【讨论】:

  • 仔细阅读,他有一个主目录,然后在那个目录中,他有脚本。 @marcolz
  • 对,这是最有可能的问题。 @aerokite
  • 感谢您的信任。 @aerokite 我没有因为指出这一点而得到。
  • @abeltre1,我没听懂你
【解决方案2】:

它要么可以找到该文件,但它只是不知道如何处理它,因为您的脚本解释器(脚本第一行上的 #!....)不存在于您的docker 映像,或者它无法找到该文件,因为它没有被复制。

您可以通过将 /bin/bash 作为最终参数传递给 docker run 命令来验证这一点,并在提示符下运行 ls -l /home/testfile.sh 和/或 /home/testfile.sh

【讨论】:

    猜你喜欢
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 2022-07-15
    • 1970-01-01
    相关资源
    最近更新 更多