사용자와 작업 디렉터리 변경

Docker 입문

Tim Sangster

Software Engineer @ DataCamp

Dockerfile 지시어 간 상호작용

FROM, RUN, COPY는 파일 시스템을 통해 상호 작용합니다.

COPY /projects/pipeline_v3/start.sh /app/start.sh
RUN /app/start.sh

일부는 다른 지시어에 직접 영향을 줍니다:

  • WORKDIR: 이후 모든 지시어의 작업 디렉터리를 변경
  • USER: 이후 모든 지시어의 사용자 변경
Docker 입문

WORKDIR - 작업 디렉터리 변경

모든 경로를 파일 시스템 루트에서 시작:

COPY /projects/pipeline_v3/ /app/

긴 경로로 작업하면 지저분해집니다:

COPY /projects/pipeline_v3/ /home/my_user_with_a_long_name/work/projects/app/

대신 WORKDIR 사용:

WORKDIR /home/my_user_with_a_long_name/work/projects/
COPY /projects/pipeline_v3/ app/
Docker 입문

현재 작업 디렉터리에서 RUN 실행

모든 명령에 전체 경로를 쓰는 대신:

RUN /home/repl/projects/pipeline/init.sh
RUN /home/repl/projects/pipeline/start.sh

WORKDIR 설정:

WORKDIR /home/repl/projects/pipeline/
RUN ./init.sh
RUN ./start.sh
Docker 입문

WORKDIR로 시작 동작 변경

전체 경로 대신:

CMD /home/repl/projects/pipeline/start.sh

WORKDIR 설정:

WORKDIR /home/repl/projects/pipeline/
CMD start.sh

재정의된 명령도 WORKDIR에서 실행됩니다:

docker run -it pipeline_image start.sh
Docker 입문

Linux 권한

  • 권한은 사용자에게 할당됩니다.
  • root는 모든 권한을 가진 특수 사용자입니다.

$$

모범 사례

  • root로 필요한 권한의 새 사용자를 만듭니다.
  • root 사용을 중단합니다.
Docker 입문

이미지에서 사용자 변경

모범 사례: 모든 작업을 root로 실행하지 마십시오

Ubuntu -> 기본은 root

FROM ubuntu         --> 기본 사용자: root
RUN apt-get update  --> root로 실행

USER Dockerfile 지시어:

FROM ubuntu         --> 기본 사용자: root
USER repl           --> 사용자 repl로 변경
RUN apt-get update  --> repl로 실행
Docker 입문

컨테이너에서 사용자 변경

Dockerfile에서 사용자를 repl로 설정:

FROM ubuntu         --> 기본 사용자: root
USER repl           --> 사용자 repl로 변경
RUN apt-get update  --> repl로 실행 

컨테이너도 repl 사용자로 시작됩니다:

docker run -it ubuntu bash
repl@container: whoami
repl
Docker 입문

요약

용도 Dockerfile 지시어
현재 작업 디렉터리 변경 WORKDIR <path>
현재 사용자 변경 USER <user-name>
Docker 입문

연습해 봅시다!

Docker 입문

Preparing Video For Download...