Możemy użyć, WORKDIR
aby ustawić katalog jako katalog roboczy w Dockerfile
, ale jaka jest wartość domyślna, jeśli nie ustawimy?
docker
dockerfile
Freewind
źródło
źródło
RUN pwd
Odpowiedzi:
docker workdir
mówi, że
/
tak, więc katalog głównyźródło
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ęcWORKDIR
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 maWORKDIR /root
. ( https://hub.docker.com/r/base/archlinux/~/dockerfile/ nie używaWORKDIR
jednak.)Dlatego najlepiej jest
WORKDIR
wyraźnie ustawić własne .źródło
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ą:Tutaj: https://docs.docker.com/engine/reference/run/#workdir
źródło
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.źródło
/
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łemdocker exec -ti <my_app> /bin/bash;
nowy proces bashpwd
i widzę, że katalog roboczy to/app
.