3.4.도커 이미지와 이미지 레이어 이해하기

web-ping 이미지의 히스토리 확인하기

001)  docker image history web-ping
002) IMAGE          CREATED         CREATED BY                                       SIZE      COMMENT
003) 79e5b536f935   6 minutes ago   CMD ["node" "/web-ping/app.js"]                  0B        buildkit.dockerfile.v0
004) <missing>      6 minutes ago   COPY app.js . # buildkit                         846B      buildkit.dockerfile.v0
005) <missing>      6 minutes ago   WORKDIR /web-ping                                0B        buildkit.dockerfile.v0
006) <missing>      6 minutes ago   ENV INTERVAL=3000                                0B        buildkit.dockerfile.v0
007) <missing>      6 minutes ago   ENV METHOD=HEAD                                  0B        buildkit.dockerfile.v0
008) <missing>      6 minutes ago   ENV TARGET=blog.sixeyed.com                      0B        buildkit.dockerfile.v0
009) <missing>      3 years ago     /bin/sh -c #(nop)  CMD ["node"]                  0B
010) <missing>      3 years ago     /bin/sh -c #(nop)  ENTRYPOINT ["docker-entry…   0B
011) <missing>      3 years ago     /bin/sh -c #(nop) COPY file:238737301d473041…   116B
012) <missing>      3 years ago     /bin/sh -c apk add --no-cache --virtual .bui…   5.11MB
013) <missing>      3 years ago     /bin/sh -c #(nop)  ENV YARN_VERSION=1.16.0       0B
014) <missing>      3 years ago     /bin/sh -c addgroup -g 1000 node     && addu…   65.1MB
015) <missing>      3 years ago     /bin/sh -c #(nop)  ENV NODE_VERSION=10.16.0      0B
016) <missing>      3 years ago     /bin/sh -c #(nop)  CMD ["/bin/sh"]               0B
017) <missing>      3 years ago     /bin/sh -c #(nop) ADD file:66f49017dd7ba2956…   5.29MB
  1. 002: CREATED BY 항목은 해당 레이어를 구성한 Dockerfile 스크립트의 인스트럭션로 이미지 레이어와 1:1 관계를 가진다.

  2. 도커 이미지는 이미지 레이어가 모인 논리적 대상

  3. 레이어는 도커 엔진의 캐시에 물리적으로 저장된 파일. 이미지 레이어는 여러 이미지와 컨테이너에서 공유됨다.
  4. 만약 Node.js 애플리케이션이 실행되는 컨테이너를 여러 개 실행한다면 이들 컨테이너는 모두 Node.js 런타임이 들어가 있는 이미지 레이어를 공유한다.

docker image ls로 출력된 이미지 목록에서 각 이미지의 용량을 확인

  • SIZE에서 각 이미지가 차지하는 논리적 용랼을 확인할 수 있다.
  • 이는 실제로 차지하는 용량이 아니다.
001)  docker image ls
002) REPOSITORY             TAG       IMAGE ID       CREATED          SIZE
003) web-ping               latest    79e5b536f935   12 minutes ago   75.5MB
004) nginx                  latest    2d21d843073b   2 days ago       192MB
005) cvve-assemble-nextjs   latest    a513dc21be10   3 days ago       4.41GB
006) cvve-assemble-php      latest    0faebb04087b   3 days ago       431MB
007) mariadb                10.5      9910c80ab6ba   6 days ago       385MB
008) md3-prod               latest    b5beda4c32e1   2 weeks ago      1.26GB
009) woogie/ubuntu          20.04     dff37f7cd07b   3 weeks ago      466MB
010) mysql                  <none>    43fcfca0776d   9 months ago     449MB
011) 
012)  docker system df
013) TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
014) Images          8         7         7.605GB   141.2MB (1%)
015) Containers      7         7         8.34MB    0B (0%)
016) Local Volumes   5         3         2.162GB   946.9MB (43%)
017) Build Cache     44        0         741.9MB   741.9MB
  1. 002: SIZE에서 각 이미지가 차지하는 논리적 용랼을 확인할 수 있다. 이는 실제로 차지하는 용량이 아니다.
  2. 012: 도커 디스크 사용상태 확인 명령어
  3. 013: SIZE에서 실제로 사용되는 디스크 용량을 확인할 수 있다.

links

social