Docker WORKDIR 混乱

Docker WORKDIR 混乱

我是 Docker 新手,我有一个非常基本的 Dockerfile 用于练习目的。

FROM debian:latest
WORKDIR /init
COPY hello_world.sh .
RUN hello_world.sh
CMD [ "/bin/bash" ]

在我尝试构建图像之后,我得到了这个:

Sending build context to Docker daemon  3.072kB
Step 1/5 : FROM debian:latest
 ---> ee11c54e6bb7
Step 2/5 : WORKDIR /init
 ---> Using cache
 ---> 605ee1ff67e9
Step 3/5 : COPY hello_world.sh .
 ---> Using cache
 ---> f544ee4e93b8
Step 4/5 : RUN hello_world.sh
 ---> Running in c4cbd6389bc2
/bin/sh: 1: hello_world.sh: not found
The command '/bin/sh -c hello_world.sh' returned a non-zero code: 127

如果我修改 RUN 指令并设置绝对路径/初始化/hello_world.sh,它工作正常。根据描述,上述 Dockerfile 应该可以工作。

来自 Dockerfile 参考:

The WORKDIR instruction sets the working directory for any RUN, CMD, ENTRYPOINT, COPY and ADD instructions that follow it in the Dockerfile.

我误解了什么吗?

答案1

尝试一下RUN ./hello_world.sh。事实上工作目录RUN 侦探使用,并不意味着它会自动出现在 PATH 中。这仍然只是工作目录执行进程的位置。

相关内容