Possiamo usare WORKDIRper impostare una directory come directory di lavoro in Dockerfile, ma qual è il valore predefinito se non lo impostiamo?
Possiamo usare WORKDIRper impostare una directory come directory di lavoro in Dockerfile, ma qual è il valore predefinito se non lo impostiamo?
Risposte:
dice di sì /, quindi la directory root
L'impostazione predefinita è infatti /come affermato altrove. Vale la pena ricordare, tuttavia, che non si eseguirà quasi mai un'immagine docker vuota ( FROM scratch), quindi WORKDIRè probabile che sia impostata dall'immagine di base che si sta utilizzando.
Ad esempio, https://github.com/docker-library/tomcat/blob/master/Dockerfile-alpine.template ha WORKDIR $CATALINA_HOMEe https://github.com/dockerfile/ubuntu/blob/master/Dockerfile ha WORKDIR /root. ( https://hub.docker.com/r/base/archlinux/~/dockerfile/ non usa WORKDIRtuttavia.)
È meglio, quindi, impostare il proprio in modo WORKDIResplicito.
La directory di lavoro predefinita per l'esecuzione dei file binari all'interno di un contenitore è la directory root ( /), ma lo sviluppatore può impostare una directory diversa con il comando Dockerfile WORKDIR. L'operatore può sovrascriverlo con:
-w="": Working directory inside the container
Poiché non ci sono utenti ma una radice in un docker appena nato o un contenitore in senso stretto. Quindi, per ogni modifica ci sarà un commit per quel contenitore come ha detto questo ragazzo . Quindi il pwd di quello o come hai chiesto a WORKDIR è / root per impostazione predefinita e ogni volta che esegui un /bin/bashcome questo:
$docker exec -i -t 53f784fwer54 /bin/bash
su un contenitore in esecuzione ti metterà qui /nella directory principale.
/è errata e irrilevante. La directory di lavoro predefinita di un nuovo contenitore è la stessa della directory di lavoro predefinita dell'immagine. Ad esempio, ho appena eseguito docker exec -ti <my_app> /bin/bash;il nuovo processo bash pwde vedo che la directory di lavoro è /app.
RUN pwd