강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

taeho Kim님의 프로필 이미지
taeho Kim

작성한 질문수

도커 마스터즈! CI/CD, DevSecOps로 자동화 보안 실무까지!

이미지 매니페스트 파일과 레이어 구조 확인

docker inspect 명령 결과에서 GraphDriver 항목을 찾을 수 없습니다.

작성

·

24

0

안녕하세요. 강의 내용 알차게 잘 듣고 있습니다.
다만, 강사님과 같이 docker inspect nginx:1.28.0-alpine3.21-slim 명령을 실행했을 경우 GraphDrvier 항목을 찾을 수 없고 바로 RootFS 항목만 확인되어 질문 드립니다.

root@vagrant:~# docker images
                                                                                i Info →   U  In Use
IMAGE                          ID             DISK USAGE   CONTENT SIZE   EXTRA
nginx:1.28.0-alpine3.21-slim   ce2bd4775ed6       20.6MB         6.29MB        
root@vagrant:~# docker inspect nginx:1.28.0-alpine3.21-slim
[
    {
        "Id": "sha256:ce2bd4775ed6859d35f47d65401ee9f35f1dd00b32ed05f0ce38b68aa1830195",
        "RepoTags": [
            "nginx:1.28.0-alpine3.21-slim"
        ],
        "RepoDigests": [
            "nginx@sha256:ce2bd4775ed6859d35f47d65401ee9f35f1dd00b32ed05f0ce38b68aa1830195"
        ],
        "Comment": "buildkit.dockerfile.v0",
        "Created": "2025-08-13T16:03:17Z",
        "Config": {
            "ExposedPorts": {
                "80/tcp": {}
            },
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "NGINX_VERSION=1.28.0",
                "PKG_RELEASE=1",
                "DYNPKG_RELEASE=1"
            ],
            "Entrypoint": [
                "/docker-entrypoint.sh"
            ],
            "Cmd": [
                "nginx",
                "-g",
                "daemon off;"
            ],
            "WorkingDir": "/",
            "Labels": {
                "maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
            },
            "StopSignal": "SIGQUIT"
        },
        "Architecture": "arm64",
        "Variant": "v8",
        "Os": "linux",
        "Size": 5802435,
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:982780712fdf5e22c7ed01172785fd7059a9ec11cb375c7133dc5b06c24250ff",
                "sha256:0d43a52040463d2c8abf5dbcfdf7494c64098f7eab47f4499e759d796c66d90c",
                "sha256:b81791db8dfbab361faf2ce24c74cf8da607971931576b0ba83e2dc8755af4e8",
                "sha256:098b681d959ad46239860f217c74a463292b5262fe004da34aa0414fe885a78e",
                "sha256:12d33c2f4dc442cbdfb0c830f359cfd92e0560c34678a1198ea68f281ada2d21",
                "sha256:76a1ff61253d86aafba3fd803cc79eb75dd573fb1ee00c6f716a8ea44dcfc414",
                "sha256:734a6dcc0d105722be038d38341a5f9c30a119082eaac2fa45fb8d51eb335451"
            ]
        },
        "Metadata": {
            "LastTagTime": "2025-12-02T04:04:23.335181057Z"
        },
        "Descriptor": {
            "mediaType": "application/vnd.oci.image.index.v1+json",
            "digest": "sha256:ce2bd4775ed6859d35f47d65401ee9f35f1dd00b32ed05f0ce38b68aa1830195",
            "size": 10293
        }
    }
]

답변 2

0

CLOUD SECURITY LAB님의 프로필 이미지
CLOUD SECURITY LAB
지식공유자

안녕하세요 김태호님

오래기다려주셔서 감사합니다.

 

현재 상태를 다음과 같이 정리해보았습니다.


현재 매니페스트 파일 변경 사유

최근의 BuildKit 빌더의 도입, 컨테이너 런타임(Containerd/snapshotter 기반) 내부 구조 개선에 따라 기존의 GraphDriver 관련 속성 일부가 deprecated(사용 중단 예정) 및 내부적으로 제거되었습니다.

https://docs.docker.com/engine/deprecated/#graphdriver-plugins-experimental

도커의 스토리지 아키텍처가 GraphDriver 방식에서 containerd 및 Snapshotter 기반으로 완전히 전환되었습니다.

이로 인해 docker inspect에서 제공하던 GraphDriver 데이터(MergedDir 등)는 deprecated(폐기)되거나 비활성화되었습니다.

따라서 이제는 과거 명령어 대신 컨테이너 ID를 기반으로 한 경로나 mount 명령어를 통해 파일 시스템 위치를 확인해야 합니다.



실습 정리

최근에 업데이트로 인해 graphdriver로 보는 방법이 막혀서 다른 방법으로 보는 방법을 아래 블로그로 정리했습니다.

https://gasbugs.tistory.com/385

그리고 이전 댓글에서 주신 것처럼 /var/lib/docker/rootfs/overlayfs/{컨테이너ID} 경로 또한 merged 디렉토리로 이해하시면 되겠습니다.


 

 

위 실습은 빠른 시일내로 영상 및 실습 내용도 업데이트하도록 하겠습니다!

감사합니다!

0

CLOUD SECURITY LAB님의 프로필 이미지
CLOUD SECURITY LAB
지식공유자

안녕하세요 김태호님

최근에 도커 이미지 정책에서 그래프 드라이버 정보를 삭제하는 방향으로 가닥을 잡았다고 확인했습니다.

다른 방법으로 조회하는 방법이 있는지 확인하고 답변 드리겠습니다.

추후 영상 교체도 진행해보도록 하겠습니다.

감사합니다!

taeho Kim님의 프로필 이미지
taeho Kim
질문자

네, 답변 주셔서 감사합니다!

root@vagrant:~# ls /var/lib/docker/rootfs/overlayfs/e0a9125f7839adef94c3cd78cae349db1508c4f31d210f677ac5ff2e8648e53c/
bin  docker-entrypoint.d   etc   lib    mnt  proc  run   srv  tmp  var
dev  docker-entrypoint.sh  home  media  opt  root  sbin  sys  usr

혹시 그럼 이 경로를 컨테이너의 파일 시스템이라고 생각해도 되는 걸까요?

CLOUD SECURITY LAB님의 프로필 이미지
CLOUD SECURITY LAB
지식공유자

docker-entrypoint.sh 이 있는 것으로 보아 rootfs가 맞는 것 같습니다. 제가 3일간 외부 일정이라서 내일 중으로 관련 정보하고 답변 달아두겠습니다.

감사합니다!

taeho Kim님의 프로필 이미지
taeho Kim

작성한 질문수

질문하기