카테고리 없음

[Docker] 도커파일(Dockerfile)을 이용한 이미지 생성(build) 방법

유자맛바나나 2022. 10. 4. 02:36

 도커파일(Dockerfile)을 이용한 이미지 생성(build) 방법

1. Full Grammar

$ docker build -f <Dockerfile 경로> -t <이미지 명>:<태그> <context 경로>
  • Dockerfile은 이미지를 생성하기 위한 명세서로 일종의 레시피와 같은 것이다. 완성된 Dockerfile과 docker build 명령어를 이용해 이미지를 생성할 수 있다.
  • Dockerfile을 이용해 이미지를 생성할 땐 아래 세 가지가 필요하다. 
    1. -f <Dockerfile 경로>
      -f 옵션을 이용해 Dockerfile의 위치를 설정한다(호스트 시스템에서의 위치). context 경로에 Dockerfile이 존재할 경우 생략할 수 있는데, 이 경우 반드시 파일명이 'Dockerfile'이어야 한다(확장자 없음).
    2. -t <이미지 명>:<태그>
      -t 옵션을 이용해 이미지 명과 태그를 설정한다(태그 미설정시 latest). 해당 옵션을 생략할 경우 이미지는 <none>으로 네이밍된다. 참고로 이미지 명은 소문자만 가능하다
    3. <context 경로>
      context는 build 중 필요한 호스트 시스템의 파일을 찾는 디렉토리 위치다. 작성된 Dockerfile에서 호스트 시스템의 파일을 찾을 때 현재 위치(./)는 <context 경로>가 된다.
      (텍스트로만 이해하기 조금 어려울 수 있다. 예를 들어 설명하자면 Dockerfile 작성중 COPY 명령어의 src file(로컬 파일)이 ./copyfile.txt 와 같이 작성됐다면 <context 경로>/copyfile.txt를 찾는 것이다.)

 

2. docker build 명령어를 사용하는 방법

context 경로 설정에 따라 docker build 명령어를 다양하게 사용할 수 있다. 일반적으로 사용하는 방법부터 세부 옵션을 적용하는 방법까지 알아보자.

 

1) 일반적인 사용 방법

$ docker build -t <이미지 명>:<태그> .  
예) $ docker build -t testimg:1.0 .
(태그 뒤에 . 을 빼면 안된다. context 경로를 현재 디렉토리로 설정한 것)
  • <context 경로> : . 
    터미널에서 docker build 명령어를 작성하고 있는 '현재 디렉토리 위치'가 context 경로다.
  • -f <Dockerfile 경로> : 생략
    Dockerfile 경로가 생략됐는데, 반드시 <context 경로>에 'Dockerfile'이란 이름으로 도커파일이 작성되어 있어야 한다.

 

2) Dockerfile을 특정하는 경우

$ docker build -f <Dockerfile 경로> -t <이미지 명>:<태그> . 
예) docker build -f ./myDockerfile -t testimg:1.0 .
  • -f <Dockerfile 경로>
    -f 옵션을 이용해 도커파일의 정확한 위치를 설정해줄 수 있다. 예시에서는 터미널에서 docker build 명령어를 입력하는 현 디렉토리 위치에 존재하는 'myDockerfile'을 도커파일로 설정한 경우다.

 

3) context 경로를 특정하는 경우

$ docker build -t <이미지 명>:<태그> <context 경로> 
예) docker build -t testimg:1.0 ./filedir
  • <context 경로>
    앞선 예시의 현재 디렉토리 위치(.)와 달리 특정 디렉토리 위치를 설정할 수 있다. 예시에서는 터미널 현재 디렉토리 아래에 있는 filedir 를 context 경로로 설정한 경우다.
  • -f <Dockerfile 경로> : 생략
    Dockerfile 경로가 생략됐다. 이 경우 ./filedir 디렉토리 안에 반드시 'Dockerfile'이란 이름의 파일이 존재해야 한다. 만약 Dockerfile의 이름이 다르거나 다른 위치에 있을 경우 -f 옵션을 이용해 도커파일의 경로를 설정해준다.