2017-11-02 2 views
1

나는 dockerhub에 Docker image을 가지고 있으며 이것은 PHP 버전을 최신 버전으로 업데이트해야하기 때문에 여러 번 만들어졌습니다. 나는 그 이미지의 이전 버전을 사용할 필요가있다. 나는 불변의 식별자 인 일명 다이제스트를 사용하는 방법이 있다고 생각한다.Docker 이미지에서 불변 식별자 (다이제스트) 목록을 가져 오는 방법은 무엇입니까?

Here은 주어진 이미지를 다이제스트로 가져 오는 방법에 대한 문서이지만 그 이미지에서 모든 다이제스트를 가져 오는 방법을 찾을 수 없습니다.

주어진 빌드를 두 번 클릭하면 빌드 코드 같은 특정 정보 (예 : berpxpunhmqe7bqh6lce5ub)를 얻을 수 있지만 그런 다이제스트라고는 생각하지 않습니다.

주어진 빌드의 다이제스트를 어떻게 찾습니까?

답변

2

다이제스트에 의해 다음과 같이 요약이 docker image inspect 수행 할 수 있습니다 풀과 함께 사용할 발견, 당신은 이전 버전에 대한 태그/식별자가 및/또는 당신의 버전 지역 이미지 캐시를 가지고 가정 :

이 예에서

$ docker image inspect --format "{{.RepoDigests}}" alpine:3.6 
[[email protected]:b40e202395eaec699f2d0c5e01e6d6cb8e6b57d77c0e0221600cf0b5940cf3ab] 
은 내가 고산 이미지의 3.6 태그를 찾고 있어요,하고 응답 내가 docker pull 같은 명령을 사용할 수있는 문자열입니다

$ docker pull [email protected]:b40e202395eaec699f2d0c5e01e6d6cb8e6b57d77c0e0221600cf0b5940cf3ab 
sha256:b40e202395eaec699f2d0c5e01e6d6cb8e6b57d77c0e0221600cf0b5940cf3ab: Pulling from library/alpine 
Digest: sha256:b40e202395eaec699f2d0c5e01e6d6cb8e6b57d77c0e0221600cf0b5940cf3ab 
Status: Image is up to date for [email protected]:b40e202395eaec699f2d0c5e01e6d6cb8e6b57d77c0e0221600cf0b5940cf3ab 

특정 이미지의 잠재적 인 문제는 모든 빌드에 latest 태그가 사용 된 것으로 보이므로 이전 이미지의 로컬 캐시가 없으면 이전 sha256을 찾는 것이 어려울 수 있습니다 이전 빌드에 대한 다이제스트 참조 ,

  1. docker images -a | grep <image name> 모든 이미지를 표시하는 데 사용할 수 있습니다

    지역 캐시 정보가 docker system prune 또는 다른 정리 유틸리티를 통해 삭제되지 않은 경우 이전 이미지 다이제스트를 찾을 수있는 몇 가지 방법이 있습니다 태그가 추가되지 않은 항목도 포함됩니다. 아래 예제는 업데이트 된 우분투를 보여줍니다 : 최신 어디에서 이전 이미지에 계속 액세스 할 수 있습니까? 그 ID (다이제스트가 아닌)를 사용하여 우분투의 이전 "빌드"의 실제 다이제스트를 검색하기 위해 동일한 docker image inspect --format '{{.RepoDigests}}' <image ID>을 사용할 수 있습니다.

  2. 내가 실행 중이거나 이미지의 이전 버전을 사용 종료 용기가 있다면, 내가 먼저 이미지 것을 검사 후 컨테이너를 검사하고 이미지 ID을 찾는 의해 그 이미지의 다이제스트를 찾을 수 위의 ID와을 입력하고 이전 이미지의 다이제스트를 검색합니다. 이 다소 인위적인 예에서 나는 여전히 유효 태그가 우연히 이미지 ID을 찾기 위해 검사 수에 Exited 용기, 1edd ..을 가지고 있지만 사용하여 나는 다음을 얻을 수 image inspect을 사용할 수 있습니다 ID입니다 심지어 이미지 캐시에 더 이상 태그가 지정되지 않아도

예 1 :

$ docker images -a | grep ubuntu 
ubuntu  latest  747cb2d60bbe 3 weeks ago 122MB` 
ubuntu  <none>  ebcd9d4fca80 5 months ago 118MB 
$ docker image inspect --format '{{.RepoDigests}}' ebcd9 
[[email protected]:382452f82a8bbd34443b2c727650af46aced0f94a44463c62a9848133ecb1aa8] 

예 2 :

$ docker ps -aq 
1edd14b528db 
$ docker container inspect 1edd | grep Image 
    "Image": "sha256:76da55c8019d7a47c347c0dceb7a6591144d232a7dd616242a367b8bed18ecbc", 
     "Image": "alpine:3.6", 
$ docker image inspect --format '{{.RepoDigests}}' 76da55 
[[email protected]:f006ecbb824d87947d0b51ab8488634bf69fe4094959d935c0c103f4820a417d] 
+0

내가 때마다 동일한 태그를 사용하고 정확하게 내 문제가 나는 이미지를 구축하고 문제가된다. 태그가 충분하지만 슬프게도 제대로 만들지 못했기 때문에 매번 버전을 사용하면 다이제스트를 검색 할 필요가 없으며 이제는 그런 문제가 있습니다. 다른 대답이 있으면 다른 것을 기다려 보자. 나는 너의 것을 받아 들일 것이다. – ReynierPM

+0

이미지 캐시에 사용 된 다이제스트를 사용하는 컨테이너에서 다이제스트를 찾을 수있는 몇 가지 예를 추가하거나 태그가없는 모든 이미지를 로컬 캐시에 나열하는 간단한 예제를 추가했습니다. 도움이되는지 알려주세요. –

+0

그게 내가 직장에서 사용하고있는 현재 이미지 (내가 찾고 싶었던 이미지)의 다이제스트를 찾는데 도움이되도록 오늘 집에서 나중에 테스트하고 그 다이제스트가 작동하는지 확인합니다. 감사합니다. 나는 당신의 대답을 받아 들였습니다. – ReynierPM

관련 문제