Możemy użyć, WORKDIR
aby ustawić katalog jako katalog roboczy w Dockerfile
, ale jaka jest wartość domyślna, jeśli nie ustawimy?
Odpowiedzi:
mówi, że /
tak, więc katalog główny
Wartość domyślna jest rzeczywiście taka, /
jak podano w innym miejscu. Warto jednak wspomnieć, że prawie nigdy nie będziesz uruchamiał się z pustego obrazu dockera ( FROM scratch
), więc WORKDIR
jest to prawdopodobnie ustawiane przez obraz podstawowy, którego używasz.
Na przykład https://github.com/docker-library/tomcat/blob/master/Dockerfile-alpine.template ma WORKDIR $CATALINA_HOME
, a https://github.com/dockerfile/ubuntu/blob/master/Dockerfile ma WORKDIR /root
. ( https://hub.docker.com/r/base/archlinux/~/dockerfile/ nie używa WORKDIR
jednak.)
Dlatego najlepiej jest WORKDIR
wyraźnie ustawić własne .
Domyślnym katalogiem roboczym do uruchamiania plików binarnych w kontenerze jest katalog główny ( /
), ale programista może ustawić inny katalog za pomocą polecenia Dockerfile WORKDIR. Operator może to zmienić za pomocą:
-w="": Working directory inside the container
Tutaj: https://docs.docker.com/engine/reference/run/#workdir
Ponieważ nie ma użytkowników, tylko root w nowo narodzonym dockerze lub ściśle mówiąc kontener. Tak więc, dla każdej zmiany będzie zatwierdzenie dla tego kontenera, jak powiedział ten facet . Stąd pwd tego lub jak prosiłeś WORKDIR jest /
domyślnie rootem i za każdym razem, gdy wykonujesz coś /bin/bash
takiego:
$docker exec -i -t 53f784fwer54 /bin/bash
na działającym kontenerze umieści cię tutaj /
w katalogu głównym.
/
jest niepoprawna i nieistotna. Domyślny katalog roboczy nowego kontenera jest taki sam, jak domyślny katalog roboczy obrazu. Na przykład po prostu uruchomiłem docker exec -ti <my_app> /bin/bash;
nowy proces bash pwd
i widzę, że katalog roboczy to /app
.
RUN pwd