본문 바로가기
Develop/Container

[Docker] Dockerfile 문법

by 독서왕뼝아리 2023. 4. 14.

Dockerfile은 애플리케이션을 패키징 하기 위한 간단한 스크립트이다. Dockerfile은 일련의 인스트럭션으로 구성돼 있는데, 인스트럭션을 실행한 결과로 도커 이미지가 만들어진다.

 

 

기본 다섯 가지 인스트럭션만으로도 엔간한(!) 애플리케이션을 도커로 패키징할 수 있다.

  • FROM
    모든 이미지는 다른 이미지에서 출발한다. 애플리케이션을 실행하는 데 필요한 런타임 이미지를 가져와야 한다. 예를 들어 Spring이면 Java를, Django라면 Python을.
  • ENV
    환경 변수 값을 지정하기 위한 인스트럭션이다. 값을 지정하기 위해 [key]="[value]" 형식을 따른다. 
  • WORKDIR
    컨테이너 이미지 파일 시스템에 디렉터리를 만들고, 해당 디렉터리를 작업 디렉터리로 지정하는 인스트럭션이다. 
  • COPY
    로컬 파일 시스템의 파일 혹은 디렉터리를 컨테이너 이미지로 복사하는 인스트럭션이다. [원본경로] [복사경로] 형식으로 지정한다.
  • CMD
    도커가 이미지로 컨테이너를 실행했을 때 실행할 명령을 지정하는 인스트럭션이다. 

 

인스트럭션은 각각 하나의 이미지 레이어와 1:1로 연결된다 그러나 인스트럭셔의 결과가 이전 빌드와 같다면, 이전에 캐시된 레이어를 재사용한다. 엄청 효율적이다. 같은 이미지를 사용하고 있는 이미지들의 로그를 찍으면 개별로 메모리를 사용하고 있다고 나오지만 실제로는 하나의 메모리가 공유되고 있는 중이라고 보면 된다!