본문 바로가기
DevOps

docker image 이해와 구조 확인

by Yoon_estar 2024. 3. 15.
728x90
반응형

docker 컨테이너 서비스를 위한 image

- docker image는 Container rutime에 필요한 바이너리, 라이브러리 및 설정 값 등을 포함하고, 변경되는 상태 값을 보유하지 않고(stateless) 변하지 않는다.

이미지 내려 받기

  • Docker는 hub.docker.com(docker.io)으로 부터 이미지를 제공 받거나 제공한다.
  • 기업의 인프라에 개별적인 Private registry 서버를 두고, 이곳에 이미지를 pull/push 하기도 한다.
# docker [image] pull [options] name:[tag]

# docker pull debian[:latest]
# docker pull library/debian:10
# docker pull docker.io/library/debian:10
# docker pull index/docker.io/library/debian:10

이미지 구조 확인

  • docker image inspect:생성된 image의 내부 구조 정보를 JSON 형태로 제공
!!! 주요 정보 !!!
- image ID : "Id"
- 생성일 : "Created"
- Docker 버전 : "DockerVersion"
- CPU 아키텍처 : "Architecture"
- 이미지 다이제스트 정보 "RootFS"
- 이미지 레이어 저장 정보 : "GraphDriver"

# docker image inspect httpd:2.4
[
    {
        "Id": "sha256:59bcd61b45fd94a7f19314d259effc3da8b42a0e157263af2246a22c07e96595",
        "RepoTags": [
            "httpd:2.4"
        ],
        "RepoDigests": [
            "httpd@sha256:bf3df534d25718ac5b206f6705ebd157f9ed5d62687766aa058556ed4b760027"
        ],
        "Parent": "",
        "Comment": "buildkit.dockerfile.v0",
        "Created": "2024-01-16T18:41:26Z",
        "Container": "",
......

!!! 정보를 원하는 부분만 보고 싶을 떄

# docker image inspect --format="{{.Os}}" httpd:2.4
linux

# docker image inspect --format="{{.RepoTags}}" httpd:2.4
[httpd:2.4]

# docker image inspect --format="{{.Id}}" httpd:2.4
sha256:59bcd61b45fd94a7f19314d259effc3da8b42a0e157263af2246a22c07e96595

# docker image inspect --format="{{.ContainerConfig.ExposedPorts}}" httpd:2.4
map[]

# docker image inspect --format="{{.RepoTags}} {{.Os}}" httpd:2.4
[httpd:2.4] linux

!!! docker history: docker image는 Dockerfile을 통해 build 됨. history는 이 정보를 제공

# docker image history httpd:2.4
IMAGE          CREATED       CREATED BY                                       SIZE      COMMENT
59bcd61b45fd   8 weeks ago   CMD ["httpd-foreground"]                         0B        buildkit.dockerfile.v0
<missing>      8 weeks ago   EXPOSE map[80/tcp:{}]                            0B        buildkit.dockerfile.v0
<missing>      8 weeks ago   COPY httpd-foreground /usr/local/bin/ # buil…   138B      buildkit.dockerfile.v0
<missing>      8 weeks ago   STOPSIGNAL SIGWINCH                              0B        buildkit.dockerfile.v0
<missing>      8 weeks ago   RUN /bin/sh -c set -eux;   savedAptMark="$(a…   81.7MB    buildkit.dockerfile.v0
<missing>      8 weeks ago   ENV HTTPD_PATCHES=                               0B        buildkit.dockerfile.v0
<missing>      8 weeks ago   ENV HTTPD_SHA256=fa16d72a078210a54c47dd5bef2…   0B        buildkit.dockerfile.v0
<missing>      8 weeks ago   ENV HTTPD_VERSION=2.4.58                         0B        buildkit.dockerfile.v0
<missing>      8 weeks ago   RUN /bin/sh -c set -eux;  apt-get update;  a…   10.3MB    buildkit.dockerfile.v0
<missing>      8 weeks ago   WORKDIR /usr/local/apache2                       0B        buildkit.dockerfile.v0
<missing>      8 weeks ago   RUN /bin/sh -c mkdir -p "$HTTPD_PREFIX"  && …   0B        buildkit.dockerfile.v0
<missing>      8 weeks ago   ENV PATH=/usr/local/apache2/bin:/usr/local/s…   0B        buildkit.dockerfile.v0
<missing>      8 weeks ago   ENV HTTPD_PREFIX=/usr/local/apache2              0B        buildkit.dockerfile.v0
<missing>      8 weeks ago   /bin/sh -c #(nop)  CMD ["bash"]                  0B        
<missing>      8 weeks ago   /bin/sh -c #(nop) ADD file:af0f4e41d68b67ca8…   74.8MB
!!! docker pull 명령어로 이미지를 받을 때 이미지 계층(layer) 구조라는 것을 보여준다.
!!! download 된 layer들은 distribution ID 를 부여 받고 docker 전용 경로에 저장된다.

# cd /var/lib/docker/image/overlay2/distribution/diffid-by-digest/sha256
반응형

'DevOps' 카테고리의 다른 글

docker registry 구성과 관리  (0) 2024.03.25
docker hub repositories에 image push  (0) 2024.03.19
최신 docker 엔진(ver) update  (0) 2024.03.14
02. docker 컨테이너 가상화 & VM 가상화  (1) 2024.03.13
01. 컨테이너 기술이란?  (0) 2024.03.13