Docker

[Docker] About Dockerfile

nang. 2020. 3. 23. 23:48
반응형
SMALL

Dockerfile

컨테이너 정보를 담은 코드 파일

이것을 기반으로 컨테이너 복제나 배포가 이루어짐

* 도커 이미지 빌드

  • Dockerfile이나 애플리케이션 실행 파일을 사용해서 도커 컨테이너의 원형이 될 이미지를 만드는 과정
    • Dockerfile 실행 시 FROM의 이미지가 만들어짐
    • 그럼 이미지를 build를 해줘야 실행(run)이 가능함

Dockerfile

FROM ubuntu:16.04

COPY helloworld /usr/local/bin
RUN chmod +x /usr/local/bin/helloworld

CMD ["helloworld"]

FROM

컨테이너를 만들 이미지(틀 역할) 정의

FROM <이미지명>:<버전>
  • 위 에서는 ubuntu 이미지를 지정하였다.
  • : 다음에 버전을 써준다.
  • 버전을 지정 안하면 기본 latest이다.

COPY

지정한 폴더에 파일을 복사하라

COPY <파일명> <폴더절대경로>
  • helloworld 파일을 /usr/local/bin에 복사하라고 정의하였다.

RUN

도커 컨테이너 안에서 이 명령을 수행해라

RUN <~~명령~~>
  • helloworld 스크립트에 실행 권한을 부여하기 위하여 chmod +x <절대경로>를 사용하였다.
  • 이미지 빌드할 때 실행된다.
  • 애플리케이션 업데이트 및 배치에 주로 사용되는 명령
  • COPY와 어떻게 순서가 놓여지느냐에 따라 진행이 달라진다.

* 여기까지 도커 빌드 과정에서 실행되며 그 결과 새로운 이미지가 만들어진다


CMD

만들어진 이미지를 도커 컨테이너로 실행하기 전에 먼저 실행할 명령을 정의

CMD ["<명령>"]
  • helloworld를 실행하는 명령어를 써줬다.
  • 컨테이너를 시작할 때 한 번 실행된다.
  • 애플리케이션 자체를 실행하는 명령

만약 아래와 같은 코드라면

CMD ["go", "run", "/echo/main.go"]
$ go run /echo/main.go

이 코드와 같은 명령을 수행한다.


** CMD 명령 오버라이드

  • Dockerfile 의 CMD에서 명령을 지정해줬어도 CLI에서 run 명령어를 사용할 때 써준 명령이 우선이므로 오버라이드 된다.

ENTRYPOINT

컨테이너 안에서 실행할 프로세스 지정 (bash, ssh..)

ENTRYPOINT ["go"] 
  • default는 bash
  • go로 실행된다.

LABEL

이미지를 만든 사람의 이름 표기

ENV

도커 컨테이너 안에서 사용할 수 있는 환경변수 지정

ARG

이미지를 빌드할 때 정보를 함께 넣기 위해 사용

  • 이미지를 빌드할 때만 사용할 수 있는 일시적인 환경변수
반응형
LIST