Verwirrung bei Docker WORKDIR

Verwirrung bei Docker WORKDIR

Ich bin ein Docker-Anfänger und habe ein wirklich einfaches Docker-File zu Übungszwecken.

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

Nachdem ich versucht habe, das Image zu erstellen, erhalte ich Folgendes:

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

Wenn ich die RUN-Direktive ändere und einen absoluten Pfad einstelle/init/hallo_welt.sh, es funktioniert gut. Basierend auf der Beschreibung sollte das obige Dockerfile funktionieren.

Aus der Dockerfile-Referenz:

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

Was habe ich falsch verstanden?

Antwort1

Versuchen Sie es RUN ./hello_world.sh. Die Tatsache, dassARBEITSVERZEICHNISvon RUN Detective verwendet wird, bedeutet nicht, dass es automatisch im PATH ist. Dies ist immer noch nur dieArbeitsverzeichniswo ein Prozess ausgeführt wird.

verwandte Informationen