Jaki jest domyślny WORKDIR w dockerze?

85

Możemy użyć, WORKDIRaby ustawić katalog jako katalog roboczy w Dockerfile, ale jaka jest wartość domyślna, jeśli nie ustawimy?

Freewind
źródło
2
Po prostu uruchom jednowierszowy plik Dockerfile za pomocąRUN pwd
kilgoretrout

Odpowiedzi:

31

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 .

Ograniczone Zadośćuczynienie
źródło
13

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

hvardhan
źródło
6

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.

Vamsidhar Muggulla
źródło
Twoja odpowiedź jest nie tylko nie na temat, jest po prostu błędna. Po pierwsze, pytanie brzmi: jaki jest domyślny katalog roboczy IMAGE, jeśli nie jest on jawnie ustawiony w pliku Dockerfile. Twoja odpowiedź mówiąca, że ​​domyślny katalog roboczy nowego KONTENERA /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.
Limited Atonement