방법
WORKDIR 은 컨테이너 내부에서 작업 디렉토리로 설정하는 명령어 입니다.
이러한 작업 디렉토리를 설정하는 이유는 내부 폴더를 깔끔하게 관리하기 위함입니다.
파일 및 폴더가 정리 되어야 찾기 쉽듯이 작업 디렉토리도 깔끔하게 정리하도록 해당 디렉토리를 설정하는 명령어 입니다.
WORKDIR [작업 디렉토리로 사용하게 될 절대 경로]
작업 디렉토리를 app 이라는 폴더로 정하고 싶을 때 아래와 같이 명령어를 사용합니다.
WORKDIR /app
그렇다면 이미지는 ubuntu 로 작업 디렉토리는 app 폴더로 지정하며, 복사할 파일을 copy_folder라고 지정하면
dockerfile은 아래와 같이 구현됩니다.
이렇게 만들어진 dockerfile 을 실행하면 시작 장소도 WORKDIR 로 변경됩니다.
그리고 원하는 폴더가 복사된 것을 알 수 있습니다.
사실 여기서 굳이 WORKDIR 을 사용하지 않고 RUN 명령어 안에 CD 문법을 사용해도 되지 않을까 의문의 제기 될 수 있다.
RUN 과 WORKDIR 의 차이점
도커 파일에서 RUN을 이용하여 app폴더를 만든 후 test.txt 파일을 생성한다면?
FROM ubuntu
RUN mkdir -p /app
RUN cd /app
RUN touch test.txt
로 가능합니다.
만약 WORKDIR 명령어를 사용한다면 아래와 같이 가능합니다.
FROM ubuntu
WORKDIR /app
RUN touch test.txt
그런데 두 가지는 차이점이 있습니다.
먼저 RUN 명령어는 RUN 명령어 내에서만 유효하며, 다음 RUN에서는 다시 초기 디렉토리(/ 루트)로 돌아감!
그래서 touch test.txt는 /app이 아닌 /(루트)에서 실행되어 루트에 test.txt 파일이 생성됩니다.
하지만, WORKDIR /app 은 위의 사진과 같이 시작점부터 달라집니다.
즉, /app을 기준으로 실행되기에 test.txt 파일은 app 폴더 내에 생성됩니다.
명령어 | 실행 시점 | 지속 여부 | 사용 목적 |
WORKDIR | 이미지 빌드 중 | ✅ 영구적 (이미지에 반영됨) | 컨테이너 실행 시 기본 디렉토리 설정 |
RUN cd | 개별 RUN 실행 중 | ❌ RUN 명령어가 끝나면 초기화됨 | 한 번만 특정 디렉토리 이동 |
'Docker' 카테고리의 다른 글
[Docker] Dockerfile 과 RUN 명령어 (0) | 2025.02.26 |
---|---|
[Docker] Dockerfile 과 ENTRYPOINT 명령어 (0) | 2025.02.26 |
[Docker] Dockerfile 그리고 COPY 명령어 (0) | 2025.02.26 |
[Docker] Dockerfile 을 만들기 그리고 FROM 명령어 (0) | 2025.02.21 |
[Docker] 실행중에 있는 컨테이너 내부에 접속하기 (0) | 2025.02.20 |