WORKDIR
에서 디렉터리를 작업 디렉터리로 설정하는 데 사용할 수 Dockerfile
있지만 설정하지 않으면 기본값은 무엇입니까?
답변:
그것이라고 /
, 루트 디렉토리 그래서
기본값은 실제로 /
다른 곳에서 언급 한 것과 같습니다. 그러나 빈 도커 이미지 ( FROM scratch
) 에서 실행되는 WORKDIR
일은 거의 없으므로 사용중인 기본 이미지에 의해 설정 될 가능성이 높다는 점을 언급 할 가치가 있습니다 .
예를 들어 https://github.com/docker-library/tomcat/blob/master/Dockerfile-alpine.template 에는 WORKDIR $CATALINA_HOME
, https://github.com/dockerfile/ubuntu/blob/master/Dockerfile 에는 WORKDIR /root
. ( https://hub.docker.com/r/base/archlinux/~/dockerfile/ 은 사용하지 않습니다 WORKDIR
.)
따라서 직접 설정하는 것이 가장 좋습니다 WORKDIR
.
컨테이너 내에서 바이너리를 실행하기위한 기본 작업 디렉터리는 루트 디렉터리 ( /
)이지만 개발자는 Dockerfile WORKDIR 명령을 사용하여 다른 디렉터리를 설정할 수 있습니다. 운영자는이를 다음으로 재정의 할 수 있습니다.
-w="": Working directory inside the container
사용자가 없기 때문에 방금 태어난 docker 또는 엄격히 말하면 컨테이너의 루트입니다. 따라서 모든 변경에 대해이 사람이 말한 것처럼 해당 컨테이너에 대한 커밋이 있습니다 . 따라서 그 암호는 /
기본적으로 루트이며 다음과 같이 실행할 때마다 WORKDIR에 요청 /bin/bash
했습니다.
$docker exec -i -t 53f784fwer54 /bin/bash
실행중인 컨테이너 /
에서 루트 디렉토리에 있습니다.
/
가 잘못되었으며 관련 이 없다는 답변 입니다. 새 컨테이너의 기본 작업 디렉토리는 이미지의 기본 작업 디렉토리와 동일합니다. 예를 들어, 방금 docker exec -ti <my_app> /bin/bash;
새로운 bash 프로세스에서 실행했는데 pwd
작업 디렉토리가 /app
.
RUN pwd