본문 바로가기
소스코드관리/Docker

도커 이미지 레이어 수정에 따른 빌드 차이 확인

by Pendine 2024. 10. 7.
728x90
이미지 최초빌드 시작 -------------------------------------------------------------
~@worker01:~/ch03/exercises/web-ping$ docker image build --tag web-ping .
[+] Building 5.5s (9/9) FINISHED                                                                                                        docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                                                                    0.0s
 => => transferring dockerfile: 191B                                                                                                                    0.0s
 => [internal] load metadata for docker.io/diamol/node:latest                                                                                           4.4s
 => [auth] diamol/node:pull token for registry-1.docker.io                                                                                              0.0s
 => [internal] load .dockerignore                                                                                                                       0.0s
 => => transferring context: 2B                                                                                                                         0.0s
 => [1/3] FROM docker.io/diamol/node:latest@sha256:dfee522acebdfdd9964aa9c88ebebd03a20b6dd573908347be3ebf52ac4879c8                                     0.2s
 => => resolve docker.io/diamol/node:latest@sha256:dfee522acebdfdd9964aa9c88ebebd03a20b6dd573908347be3ebf52ac4879c8                                     0.0s
 => [internal] load build context                                                                                                                       0.1s
 => => transferring context: 881B                                                                                                                       0.0s
 => [2/3] WORKDIR /web-ping                                                                                                                             0.1s
 => [3/3] COPY app.js .                                                                                                                                 0.1s
 => exporting to image                                                                                                                                  0.5s
 => => exporting layers                                                                                                                                 0.2s
 => => exporting manifest sha256:2a8c345627ea204165da871be2a31f712bb9ac5153ca9c03e7b954de0af1a0dc                                                       0.0s
 => => exporting config sha256:f1e14bf9395ea7502e6c53f90b14681718fe46a064536a3ac2a4ca0da70ef03a                                                         0.0s
 => => exporting attestation manifest sha256:235ff55fece72cc1d39e469b763436f36a426511a20bf0a9aea074b7952b8eb5                                           0.0s
 => => exporting manifest list sha256:9c4fa23e8e46e991fa0dd3619f2a1c058c6939a8c719e7544350a1e1a3a29273                                                  0.0s
 => => naming to docker.io/library/web-ping:latest                                                                                                      0.0s
 => => unpacking to docker.io/library/web-ping:latest                                                                                                   0.1s
 이미지 최초빌드 종료 -------------------------------------------------------------
 파일 수정없이 이미지 빌드 시작 -------------------------------------------------------------
~@worker01:~/ch03/exercises/web-ping$ docker image build --tag web-ping .
[+] Building 1.5s (8/8) FINISHED                                                                                                        docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                                                                    0.0s
 => => transferring dockerfile: 191B                                                                                                                    0.0s
 => [internal] load metadata for docker.io/diamol/node:latest                                                                                           1.0s
 => [internal] load .dockerignore                                                                                                                       0.0s
 => => transferring context: 2B                                                                                                                         0.0s
 => [1/3] FROM docker.io/diamol/node:latest@sha256:dfee522acebdfdd9964aa9c88ebebd03a20b6dd573908347be3ebf52ac4879c8                                     0.0s
 => => resolve docker.io/diamol/node:latest@sha256:dfee522acebdfdd9964aa9c88ebebd03a20b6dd573908347be3ebf52ac4879c8                                     0.0s
 => [internal] load build context                                                                                                                       0.0s
 => => transferring context: 28B                                                                                                                        0.0s
 => CACHED [2/3] WORKDIR /web-ping                                                                                                                      0.0s
 => CACHED [3/3] COPY app.js .                                                                                                                          0.0s
 => exporting to image                                                                                                                                  0.1s
 => => exporting layers                                                                                                                                 0.0s
 => => exporting manifest sha256:2a8c345627ea204165da871be2a31f712bb9ac5153ca9c03e7b954de0af1a0dc                                                       0.0s
 => => exporting config sha256:f1e14bf9395ea7502e6c53f90b14681718fe46a064536a3ac2a4ca0da70ef03a                                                         0.0s
 => => exporting attestation manifest sha256:3992a4ca8bf22907eb16b275c9e0700c8432d10639ae9268e8f699131e63ea9b                                           0.0s
 => => exporting manifest list sha256:fb3303bc36c7bea24988fe77c3e23ec46ce888dbffa42c1656a2400ad0190e75                                                  0.0s
 => => naming to docker.io/library/web-ping:latest                                                                                                      0.0s
 => => unpacking to docker.io/library/web-ping:latest
  파일 수정없이 이미지 빌드 종료 -------------------------------------------------------------
  파일 수정 후 이미지 빌드 시작 -------------------------------------------------------------
 ~@worker01:~/ch03/exercises/web-ping$ docker image build -t web-ping:v2 .
[+] Building 3.5s (9/9) FINISHED                                                                                                        docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                                                                    0.0s
 => => transferring dockerfile: 191B                                                                                                                    0.0s
 => [internal] load metadata for docker.io/diamol/node:latest                                                                                           2.7s
 => [auth] diamol/node:pull token for registry-1.docker.io                                                                                              0.0s
 => [internal] load .dockerignore                                                                                                                       0.0s
 => => transferring context: 2B                                                                                                                         0.0s
 => [1/3] FROM docker.io/diamol/node:latest@sha256:dfee522acebdfdd9964aa9c88ebebd03a20b6dd573908347be3ebf52ac4879c8                                     0.0s
 => => resolve docker.io/diamol/node:latest@sha256:dfee522acebdfdd9964aa9c88ebebd03a20b6dd573908347be3ebf52ac4879c8                                     0.0s
 => [internal] load build context                                                                                                                       0.0s
 => => transferring context: 887B                                                                                                                       0.0s
 => CACHED [2/3] WORKDIR /web-ping                                                                                                                      0.0s
 => [3/3] COPY app.js .                                                                                                                                 0.0s
 => exporting to image                                                                                                                                  0.4s
 => => exporting layers                                                                                                                                 0.2s
 => => exporting manifest sha256:f3da3b8c443c4b22b36250e554ecac90f763e3798e8e1cb092baa2cdf126e371                                                       0.0s
 => => exporting config sha256:012618c2e871c27a5b41483a47493836fde5a662fa0e6df5bbed49ac460a9925                                                         0.0s
 => => exporting attestation manifest sha256:dca4c9666659a5f4e2cf0c8d62c06a78cf108ddd93a9e3cfe6782cfeee80dce1                                           0.0s
 => => exporting manifest list sha256:f141db8fbf494079bd24a7ad5331a56c6917eceb431c3240843571e67116eeaf                                                  0.0s
 => => naming to docker.io/library/web-ping:v2                                                                                                          0.0s
 => => unpacking to docker.io/library/web-ping:v2
  파일 수정 후 이미지 빌드 종료 -------------------------------------------------------------

도커 이미지 빌드할때는 수정되지 않은경우 캐시된 정보를 이용하고

수정 된 경우에는 정보를 새로 불러다 씀

 

위 내용같은경우는 도커파일내용이

FROM diamol/node

ENV TARGET="blog.sixeyed.com"
ENV METHOD="HEAD"
ENV INTERVAL="3000"

WORKDIR /web-ping
COPY app.js .

CMD ["node", "/web-ping/app.js"]

의 형식이었는데

app.js의 가장 하단부분에 공백을 붙여 저장한 후

다시 빌드하니 app.js를 캐시하지 않은 정보를 갖다 씀.

 

순서는

1. 이미지 빌드

2. app.js 수정없이 다시 이미지 빌드

3. app.js 수정 후 이미지 빌드

 

마지막에 CMD의 내용에 뭐가 어떻게 들어가야하나 node 라고 붙이는게 노드js를 이용하려고하는거라는데.

npm intall이고 뭐고 아무것도 없는데

흠...

 

도커의 이미지 레이어, 스크립트 최적화의 기본개념을 알게됐음.

728x90

댓글