Możemy użyć, WORKDIRaby 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 WORKDIRjest 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 WORKDIRjednak.)
Dlatego najlepiej jest WORKDIRwyraź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/bashtakiego:
$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 pwdi widzę, że katalog roboczy to /app.
RUN pwd