Develop/Docker

[Docker] Dockerfile 명령어

Gr00t 2021. 2. 3. 18:00

FROM

FROM [image](:[tag])

베이스이미지 지정

tag가 없을 경우, 자동으로 latest태그의 이미지를 지정한다.

  • 베이스이미지가 OS가 아닐경우, 해당 이미지가 돌아갈 수 있는 최소한의 패키지가 포함되어있어 운영체제가 베이스가 되지 않아도 돌아갈 수 있다.

MAINTAINER

MAINTAINER [name]

dockerfile을 관리하는 사람의 이름 또는 이메일 정보 지정한다.

*빌드에 영향 없음

COPY

COPY [src] ... [dst]

파일이나 디렉토리를 복사하고 없으면 자동 생성한다.

ADD

ADD [src] ... [dst]

COPY와 같은 역할

src에 URL 입력이 가능하며 압축 파일일 경우 자동 압축 해제 후 복사된다.

RUN

RUN [command]

  1. shell 형식 - 설치해야하는 명령

    shell 명령을 직접 인자로 붙여 실행한다.

    RUN apt-get update && apt-get install -y git
  1. exec 형식 - 설치 후 실행하는 명령

    /bin/sh -c 뒤에 명령을 붙여 리스트 형태로 전달해 명령어 실행한다.

    RUN ["/bin/sh", "-c", "apt-get update && apt-get install -y git"]

CMD

CMD [command]

빌드시는 실행되지 않고 컨테이너가 실행된 후에 실행되는 명령어를 정의한다.

하나만 실행되므로 여러개 하고 싶으면 run.sh 작성해 인자로 주거나 프로그램을 사용해야한다.

ENTRYPOINT

ENTRYPOINT [command]

CMD와 같은 역할을 하지만 docker run 명령 실행시 바로 실행된다.

WORKIDR

WORKDIR /path

dockerfile 명령들이 실행될 기본 디렉토리를 설정한다.

지정해주지 않으면 명령마다 기본 디렉토리가 초기화되기 때문에 필요하다.

EXPOSE

EXPOSE [port, ...]

열린 포트를 지정한다. 여러개의 포트를 지정할 수 있다.

VOLUME

VOLUME ["/data"]

컨테이너 외부에 파일 시스템을 마운트한다.

ENV

ENV [key] [value]

환경 변수를 key=value형태로 지정한다.