Programing

도커 이미지 내용을 보는 방법

crosscheck 2020. 5. 16. 11:08
반응형

도커 이미지 내용을 보는 방법


도커 풀을 수행하여 다운로드 된 이미지를 나열 할 수 있습니다. 이 이미지의 내용을보고 싶습니다. 인터넷에서 검색했지만 정답은 없습니다.


해당 이미지를 사용하여 대화식 쉘 컨테이너를 실행하고 해당 이미지의 컨텐츠를 탐색 할 수 있습니다.

예를 들어 :

docker run -it image_name sh

또는 이미지가 어떻게 만들어 졌는지 확인하려면의 단계를 의미합니다 Dockerfile.

docker image history --no-trunc image_name > image_history

단계가 image_history파일에 로그인됩니다 .

entrypoint구성된 이미지의 경우 docker run -it --entrypoint sh image_name대신 실행 하여 이미지 를 재정의 할 수 있습니다 (주석에 도움이 됨).


여기에 허용되는 대답은 문제가 있습니다. 이미지에 대화 형 쉘이있을 것이라는 보장이 없기 때문입니다. 예를 들어, 무인 항공기 / 무인 항공기의 이미지는 하나의 명령에 포함 /drone, 그것은을 가지고 ENTRYPOINT이 실패합니다, 그래서뿐만 아니라 :

$ docker run -it drone/drone sh
FATA[0000] DRONE_HOST is not properly configured        

그리고 이것은 실패합니다 :

$ docker run --rm -it --entrypoint sh drone/drone
docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: \"sh\": executable file not found in $PATH".

이것은 드문 구성이 아닙니다. 많은 최소 이미지에는 대상 서비스를 지원하는 데 필요한 바이너리 만 포함되어 있습니다. 다행히도 이미지 내용의존하지 않는 이미지 파일 시스템을 탐색하는 메커니즘이 있습니다 . 컨테이너 파일 시스템을 tar 아카이브로 docker export내보내는 명령 이 가장 쉬운 방법 일 것입니다 . 따라서 컨테이너를 시작하십시오 (실패 여부는 중요하지 않음).

$ docker run -it drone/drone sh
FATA[0000] DRONE_HOST is not properly configured        

그런 다음 docker export파일 시스템을 다음 으로 내보내십시오 tar.

$ docker export $(docker ps -lq) | tar tf -

docker ps -lq"나에게 가장 최근의 고정 표시기 컨테이너의 ID를 부여"가 의미합니다. 이를 명시적인 컨테이너 이름 또는 ID로 바꿀 수 있습니다.


이미지 내용을보기 위해 컨테이너를 시작해서는 안됩니다. 예를 들어 악의적 인 콘텐츠를 찾고 실행하지 않는 것이 좋습니다. "run"대신 "create"를 사용하십시오.

docker create --name="tmp_$$" image:tag
docker export tmp_$$ | tar t
docker rm tmp_$$

docker save nginx > nginx.tar
tar -xvf nginx.tar

다음과 같은 파일이 있습니다.

  • manifest.json – 파일 시스템 계층과 컨테이너 속성이있는 json 파일의 이름을 설명합니다.
  • .json – 컨테이너 속성
  • – 각“layerid”디렉토리에는 해당 레이어와 연관된 레이어 속성 및 파일 시스템을 설명하는 json 파일이 있습니다. Docker는 컨테이너 이미지를 레이어로 저장하여 이미지에서 레이어를 재사용하여 저장 공간을 최적화합니다.

https://sreeninet.wordpress.com/2016/06/11/looking-inside-container-images/

또는

다이빙사용 하여 TUI로 대화식으로 이미지 컨텐츠를 볼 수 있습니다

여기에 이미지 설명을 입력하십시오

https://github.com/wagoodman/dive


이미지의 자세한 내용을 나열하려면 컨테이너에서 종료하자마자 제거 해야하는 docker run --rm image/name ls -alR에서 실행해야합니다 --rm.

여기에 이미지 설명을 입력하십시오


다음과 같이 간단한 것을 시도해 볼 수 있습니다.

docker image inspect image_id

이것은 Docker 버전에서 작동했습니다.

DockerVersion": "18.05.0-ce"

Windows 용 Docker EE (Hyper-V Server 2016의 17.06.2-ee-6) C:\ProgramData\docker\windowsfilter\를 사용하면 호스트 컨테이너의 경로 에서 Windows 컨테이너의 모든 내용을 검사 할 수 있습니다 .

특별한 장착이 필요하지 않습니다.

폴더 접두사는 docker ps -a출력 에서 컨테이너 ID로 찾을 수 있습니다 .


컨테이너 이미지를 스캔하는 데 사용할 수있는 Anchore라는 무료 오픈 소스 도구가 있습니다. 이 명령을 사용하면 컨테이너 이미지의 모든 파일을 나열 할 수 있습니다

anchore-cli 이미지 컨텐츠 myrepo / app : 최신 파일

https://anchore.com/opensource/


도커 이미지 살펴보기 !

  1. 종류 쉘의 거기에 무엇인지 그림 bash이나 sh또는 ...

    먼저 이미지를 검사하십시오. docker inspect name-of-container-or-image

    json return entrypoint찾거나 찾으십시오 cmd.

  2. 그런 다음 수행하십시오. docker run --rm -it --entrypoint=/bin/bash name-of-image

    일단 내부 : ls -lsa또는 다음과 같은 다른 쉘 명령 :cd ..

    -it대화 형 및 tty 약자. --rm실행 한 후 제거 컨테이너를 의미합니다.

참고 URL : https://stackoverflow.com/questions/44769315/how-to-see-docker-image-contents

반응형