Docker 입문
Tim Sangster
Software Engineer @ DataCamp
FROM, RUN, COPY는 파일 시스템을 통해 상호 작용합니다.
COPY /projects/pipeline_v3/start.sh /app/start.sh
RUN /app/start.sh
일부는 다른 지시어에 직접 영향을 줍니다:
WORKDIR: 이후 모든 지시어의 작업 디렉터리를 변경USER: 이후 모든 지시어의 사용자 변경모든 경로를 파일 시스템 루트에서 시작:
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/
모든 명령에 전체 경로를 쓰는 대신:
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
전체 경로 대신:
CMD /home/repl/projects/pipeline/start.sh
WORKDIR 설정:
WORKDIR /home/repl/projects/pipeline/
CMD start.sh
재정의된 명령도 WORKDIR에서 실행됩니다:
docker run -it pipeline_image start.sh
$$
모범 사례
Ubuntu -> 기본은 root
FROM ubuntu --> 기본 사용자: root
RUN apt-get update --> root로 실행
USER Dockerfile 지시어:
FROM ubuntu --> 기본 사용자: root
USER repl --> 사용자 repl로 변경
RUN apt-get update --> repl로 실행
Dockerfile에서 사용자를 repl로 설정:
FROM ubuntu --> 기본 사용자: root
USER repl --> 사용자 repl로 변경
RUN apt-get update --> repl로 실행
컨테이너도 repl 사용자로 시작됩니다:
docker run -it ubuntu bash
repl@container: whoami
repl
| 용도 | Dockerfile 지시어 |
|---|---|
| 현재 작업 디렉터리 변경 | WORKDIR <path> |
| 현재 사용자 변경 | USER <user-name> |
Docker 입문