이전 포스팅에서 살펴보았던 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 <명령어> |
■
'풀스택 개발 들여다보기' 카테고리의 다른 글
[Docker] Dockerizing 예 - 파이썬 플라스크 서버 (0) | 2022.03.23 |
---|---|
[Docker] 도커 ENTRYPOINT 명령과 CMD 명령의 차이 (0) | 2022.03.18 |
[Docker] 도커 이미지 빌드 - Dockerfile 기본 구조 (0) | 2022.03.15 |
[Docker] 컨테이너를 이미지로 저장하기 - 도커 이미지 생성 (0) | 2022.03.09 |
[Docker] docker 커맨트를 sudo 없이 실행시키기 (0) | 2022.03.07 |
댓글