Linux
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 指令並設置絕對路徑**/init/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.
我誤會了什麼?
試試
RUN ./hello_world.sh
。RUN 偵探使用WORKDIR的事實並不意味著它會自動在 PATH 中。這仍然只是執行程序的工作目錄。