【发布时间】: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吗?