본문 바로가기
독서/시작하세요! 도커 & 쿠버네티스

4. Dockerfile 빌드

by Thinking 2023. 11. 30.

이미지 생성

 3장에서 Dockerfile이 생성되는 과정을 확인해볼게요.

(test.html, Dockerfile 위치는 예로 ./)

[1. 빌드 컨텍스트]

||

||

V

docker build -t mybuild:0.0 ./      -------->      FROM ubuntu ~~               --------->     myapp:0.0 (4. 새로운 이미지)

(2. 디렉터리: ./)                                                         RUN apt-get update

                                                                                       (3. 도커 이미지) 

 

 이미지 빌드를 시작하면 도커는 가장 먼저 빌드 컨텍스트를 읽어 들입니다. 빌드 컨텍스트는 이미지를 생성하는 데 필요한 각종 파일, 소스코드, 메타데이터 등을 담고 있는 디렉터리를 의미하며, Dockerfile이 위치한 디렉터리가 빌드 컨텍스트가 됩니다. 빌드 컨텍스느는 DockerFile에서 빌드될 이미지에 파일을 추가할 때 사용됩니다. Dockerfile에서 이미지에 파일을 추가하는 방법은 앞에서 설명한 ADD 외에도 COPY가 있는데, 이 명령어들은 빌드 컨텍스트의 파일을 이미지에 추가합니다. 위 예제에서는 빌드 경로를 ./로 지정함으로써 test.html 파일을 빌드 컨텍스트에 추가했으며, ADD 명령어를 통해 빌드 컨텍스트에서 test.html 파일을 이미지에 추가했습니다. 컨텍스트에 대한 정보는 이미지를 빌드할 때 출력 중 맨 위에 위치합니다. -->> Sending build context to Docker daemon 3.222kb 

 

 컨텍스트는 build 명령어의 맨 마지막에 지정된 위치에 있는 파일을 전부 포함하는데, GIT과 같은 외부 URL에서 dockerfile을 읽어 들인다면 해당 저장소에 있는 파일과 서브 모듈을 포함합니다. 따라서 Dockerfile이 위치한 곳에는 이미지 빌드에 필요한 파일만 있는 것이 바람직하며, 루트 디렉토리와 같은 곳에서 이미지 빌드를 하지 않도록 주의해야합니다. 이를 방지하기 위해 .gitignore 같은 기능을 사용할 수 있습니다. .dockerignore 라는 파일을 작성하면 빌드 시 이 파일에 명시된 이름의 파일을 컨텍스트에서 제외합니다.

 

 또한 한 번 이미지 빌드를 마치고 다시 같은 빌드를 진행하면 이전의 이미지 빌드에서 사용했던 캐시를 사용합니다. Using cache라는 출력과 함께 별도의 빌드 과정이 진행되지 않고 바로 이미지가 생성됐습니다. 이전에 빌드했던 Dockerfile에 같은 내용이 있다면 build 명령어는 이를 새로 빌드하지 않고 같은 명령어 줄까지 이전에 사용한 이미지 레이러를 활용해 이미지를 생성합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'독서 > 시작하세요! 도커 & 쿠버네티스' 카테고리의 다른 글

6. 도커 데몬  (2) 2023.12.07
5. Dockerfile 명령어  (3) 2023.12.02
3. 도커 이미지  (0) 2023.11.29
2. 도커 볼륨 & 도커 네트워크  (1) 2023.11.28
1. 도커  (4) 2023.11.24