본문 바로가기
풀스택 개발 들여다보기

[Docker] Dockerfile 명령어 살펴보기

by 영바이트 2022. 3. 16.

 

이전 포스팅에서 살펴보았던 FROM, MAINTAINER, RUN, COPY, ADD 명령어에 이어 Dockerfile에서 사용되는 명령어들을 계속 살펴보자. 아래는 이 전 포스팅이다. 이 포스팅에서 살펴보지 않은 Dockerfile 명령어들은 이 전 포스팅에서 다루었을 것이다.

 

2022.03.15 - [풀스택 개발 들여다보기] - [Docker] 도커 이미지 빌드 - Dockerfile 기본 구조

 

[Docker] 도커 이미지 빌드 - Dockerfile 기본 구조

앞의 포스팅에서 도커 이미지를 생성하는 방법에 대해 살펴보았고 Dockerfile이라는 스크립트를 이용해서 도커 이미지 생성 과정을 관리하는 예에 대해서도 간단히 살펴보았다. 2022.03.09 - [풀스택

youngbyte.tistory.com

 

Dockerfile을 구성하는 명령어 살펴보기 - part 2 of 2

 

◆ ENV

환경변수 기본값을 지정한다. ENV로 설정한 환경 변수는 RUN, CMD, ENTRYPOINT에 적용된다.

END <환경 변수> <기본 값>

예)

ENV AWESOME_VAR FOOBAR

RUN echo $AWERSOME_VAR

 

Dockerfile에 위와 같이 입력하면 AWERSOME_VAR 변수에 지정한 'FOOBAR' 문자열이 화면에 출력된다.

 

◆ EXPOSE

컨테이너 실행 시 외부로 노출시킬 포트를 지정한다.

EXPOSE <포트>

 

예) EXPOSE 3300

 

◆ VOLUME

VOLUME 명령어는 컨테이너 사이에 디렉토리 공유를 위해 사용된다. docker-compose.yml에서 'volumes_from' 필드에 디렉토리를 공유할 컨테이너를 지정하게된다.

실행 관점에서 보면 컨테이너 실행 시, <경로>를 호스트(host)의 /var/lib/docker/volumes/{volume_name}으로 연결하면서 실행된다. 이 때 volume_name은 임의의 hash 값으로 생성된다.

VOLUME <경로>

VOLUME 명령어는 사실 필자도 사용해 본 기억이 없다. 

 

◆ ENTRYPOINT

이미지가 컨테이너로 활성화될 때 실행될 명령어를 지정한다.

ENTRYPOINT <명령어>

예) ENTRYPOINT /run.sh

이미지가 실행될 때 /run.sh 스크립트가 실행된다.

 

◆ CMD

이미지가 컨테이너로 활성화될 때 실행될 명령어를 지정한다. ENTRYPOINT와 달리 이미지 실행 시 명령어를 변경할 수 있다.

CMD <명령어>

예) CMD /run.sh

이미지가 실행될 때 /run.sh 스크립트가 실행된다.

 

이전 포스팅과 이번 포스팅에서 살펴본 Dockerfile 명령어들을 정리해보면 아래와 같다.

명령어 기능 사용 방법
FROM 이미지를 생성할 기반 이미지(베이스 이미지)를 지정한다. FROM <베이스 이미지>[:<태그>]
MAINTAINER 누가 작성했는지 명시하기 위해 사용한다. MAINTAINER <이미지 관리자 정보>
RUN 이미지가 빌드될 때 실행할 명령을 지정한다. RUN <명령어>
COPY 호스트의 파일을 도커 이미지 안으로 복사한다. COPY <복사할 파일> <도커 이미지 안에서 파일이 추가될 경로>
ADD 호스트의 파일을 도커 이미지 안으로 복사한다. COPY와 달리 URL로 지정된 파일, 압축된 파일 해제 및 복사가 가능하다. ADD <추가할 파일> <도커 이미지 안에서 파일이 추가될 경로>
WORKDIR RUN 명령어가 실행될 디렉토리를 지정(변경)한다. WORKDIR <디렉토리>
ENV 환경변수 기본값을 지정한다. ENV <환경 변수> <기본 값>
EXPOSE 이미지가 컨테이너로 활성화될 때 노출시킬 포트를 지정한다. EXPOSE <포트>
ENTRYPOINT 이미지가 컨테이너로 활성화될 때 실행될 명령어를 지정한다. ENTRYPOINT <명령어>
CMD 이미지가 컨테이너로 활성화될 때 실행될 명령어를 지정한다. 
ENTRYPOINT와 달리 이미지 실행 시 명령어를 변경할 수 있다.
CMD <명령어>

 

 

댓글