Docker의 기본 WORKDIR은 무엇입니까?


85

WORKDIR에서 디렉터리를 작업 디렉터리로 설정하는 데 사용할 수 Dockerfile있지만 설정하지 않으면 기본값은 무엇입니까?


2
다음으로 단일 행 Dockerfile을 실행하십시오.RUN pwd
kilgoretrout

답변:



31

기본값은 실제로 /다른 곳에서 언급 한 것과 같습니다. 그러나 빈 도커 이미지 ( 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.


13

컨테이너 내에서 바이너리를 실행하기위한 기본 작업 디렉터리는 루트 디렉터리 ( /)이지만 개발자는 Dockerfile WORKDIR 명령을 사용하여 다른 디렉터리를 설정할 수 있습니다. 운영자는이를 다음으로 재정의 할 수 있습니다.

-w="": Working directory inside the container

여기 : https://docs.docker.com/engine/reference/run/#workdir


6

사용자가 없기 때문에 방금 태어난 docker 또는 엄격히 말하면 컨테이너의 루트입니다. 따라서 모든 변경에 대해이 사람이 말한 것처럼 해당 컨테이너에 대한 커밋이 있습니다 . 따라서 그 암호는 / 기본적으로 루트이며 다음과 같이 실행할 때마다 WORKDIR에 요청 /bin/bash했습니다.

$docker exec -i -t 53f784fwer54 /bin/bash

실행중인 컨테이너 /에서 루트 디렉토리에 있습니다.


귀하의 대답은 주제에서 벗어난 것이 아니라 명백히 잘못되었습니다. 먼저 질문은 Dockerfile에 명시 적으로 설정되지 않은 경우 IMAGE의 기본 WORKDIR은 무엇입니까? 새 CONTAINER의 기본 작업 디렉토리 /가 잘못되었으며 관련 이 없다는 답변 입니다. 새 컨테이너의 기본 작업 디렉토리는 이미지의 기본 작업 디렉토리와 동일합니다. 예를 들어, 방금 docker exec -ti <my_app> /bin/bash;새로운 bash 프로세스에서 실행했는데 pwd작업 디렉토리가 /app.
제한된 속죄
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.