[docker] 도커 이미지의 sha256 코드는 어디에서 찾을 수 있습니까?

다음과 같이 sha256 코드를 사용하여 centos, tomcat, …의 이미지를 가져오고 싶습니다.

docker pull myimage@sha256:0ecb2ad60

하지만 어디에서나 사용할 sha256 코드를 찾을 수 없습니다.

sha256 코드에 대한 힌트가 있는지 dockerhub 저장소를 확인했지만 찾을 수 없었습니다. 태그로 이미지를 다운로드했습니다.

docker pull tomcat:7-jre8

docker inspect메타 데이터에 sha256 코드가 있는지 확인하기 위해 이미지를 확인 했지만 아무것도 없습니다 (이미지의 sha256 코드를 추가하면 sha256 코드가 변경 될 수 있음).

이미지의 sha256 코드를 직접 계산하고 사용해야합니까?



답변

최신 답변

댓글에서 OhJeez가 제안한 편집.

docker inspect --format='{{index .RepoDigests 0}}' $IMAGE

원래 답변

나는 당신이 또한 이것을 사용할 수 있다고 믿습니다

docker inspect --format='{{.RepoDigests}}' $IMAGE

Docker 1.9에서만 작동하며 이미지가 원래 다이제스트에서 가져온 경우에만 작동합니다. 자세한 내용은 도커 문제 추적기에 있습니다.


답변

당신은 그것을 얻을 수 있습니다 docker images --digests

REPOSITORY          TAG    DIGEST                                                                    IMAGE ID     CREATED        SIZE
docker/ucp-agent    2.1.0  sha256:a428de44a9059f31a59237a5881c2d2cffa93757d99026156e4ea544577ab7f3   583407a61900 3 weeks ago    22.3 MB


답변

방금 본 것 :

이미지를 가져 오면 출력 하단에 sha256 코드가 표시됩니다 (다이제스트 : sha ….).

docker pull tomcat:7-jre8
7-jre8: Pulling from library/tomcat
902b87aaaec9: Already exists
9a61b6b1315e: Already exists
...
4dcef5c50d60: Already exists
Digest: sha256:c34ce3c1fcc0c7431e1392cc3abd0dfe2192ffea1898d5250f199d3ac8d8720f
Status: Image is up to date for tomcat:7-jre8

이 샤 코드

sha256 : c34ce3c1fcc0c7431e1392cc3abd0dfe2192ffea1898d5250f199d3ac8d8720f

나중에 이미지를 당기는 데 사용할 수 있습니다.

docker pull tomcat @ sha256 : c34ce3c1fcc0c7431e1392cc3abd0dfe2192ffea1898d5250f199d3ac8d8720f

이렇게하면 이미지가 변경되지 않고 프로덕션에 안전하게 사용할 수 있습니다.


답변

가장 간단하고 간결한 방법은 다음과 같습니다.

docker images --no-trunc --quiet $IMAGE

이것은 sha256:...문자열 만 반환 하고 다른 것은 반환 하지 않습니다.

예 :

$ docker images --no-trunc --quiet debian:stretch-slim
sha256:220611111e8c9bbe242e9dc1367c0fa89eef83f26203ee3f7c3764046e02b248

편집하다:

참고 : 이것은 로컬 이미지에 대해서만 작동합니다. docker pull $IMAGE필요한 경우 먼저 할 수 있습니다 .


답변

기존 답변 외에도 가지고있는 모든 이미지에 대한 요약 목록을 가져 오는 --digests동안 옵션을 사용할 docker images수 있습니다.

docker images --digests

grep을 추가하여 더 드릴 다운 할 수 있습니다.

docker images --digests | grep tomcat


답변

이전에 사용되지 않는 Docker Hub API 에서 볼 수있는 Id 필드 여야 합니다.

GET /v1/repositories/foo/bar/images HTTP/1.1
  Host: index.docker.io
  Accept: application/json

Parameters:

namespace – the namespace for the repo
repo_name – the name for the repo

응답 예 :

HTTP/1.1 200
Vary: Accept
Content-Type: application/json

[{"id": "9e89cc6f0bc3c38722009fe6857087b486531f9a779a0c17e3ed29dae8f12c4f",
"checksum": "b486531f9a779a0c17e3ed29dae8f12c4f9e89cc6f0bc3c38722009fe6857087"},
{"id": "ertwetewtwe38722009fe6857087b486531f9a779a0c1dfddgfgsdgdsgds",
"checksum": "34t23f23fc17e3ed29dae8f12c4f9e89cc6f0bsdfgfsdgdsgdsgerwgew"}]

그러나 이것은 새로운 도커 배포판 에서 현재 작동하는 방식 이 아닙니다 . 문제 628 : “태그 이름으로 이미지 ID 가져 오기”
참조

/v1/레지스트리 응답 /repositories/<repo>/tags태그 핸들과 함께 이미지 ID를 나열하는 데 사용.
/v2/핸들을주는 것 같습니다.

로컬에서 찾은 ID와 비교할 ID를 가져 오는 것이 유용합니다. 내가 ID를 찾을 수있는 유일한 위치 v1Compat는 매니페스트 의 섹션입니다 (원하는 정보에 대해 과도 함).

현재 (2015 년 중반) 답변은 다음과 같습니다.

V1 API의이 속성은 이미지가 백엔드에 저장되는 방식에 대해 계산 비용이 많이 들었습니다. 2 차 조회를 피하기 위해 태그 이름 만 열거됩니다.
또한 V2 API는 이미지 ID를 처리하지 않습니다. 오히려 다이제스트를 사용하여 계층을 식별하며 계층의 속성으로 계산할 수 있고 독립적으로 검증 할 수 있습니다.


답변

위의 방법이 어떤 경우에는 작동하지 않는 것으로 나타났습니다. 다음 중 하나입니다.

  • 동일한 해시를 가진 여러 이미지를 잘 처리하지 마십시오 (.RepoDigests 제안의 경우-특정 레지스트리 경로를 사용하려는 경우)
  • 이미지를 레지스트리로 푸시 할 때 제대로 작동하지 않습니다 (레지스트리의 해시가 아닌 로컬 해시 인 .Id의 경우).

아래 방법은 섬세하지만 특정 푸시 된 컨테이너에 대한 특정 전체 ‘이름’과 해시를 추출하는 데 사용됩니다.

시나리오는 다음과 같습니다. 이미지는 동일한 저장소에있는 2 개의 다른 프로젝트에 별도로 업로드되므로 RepoDigests를 쿼리하면 2 개의 결과가 반환됩니다.

$ docker inspect --format='{{.RepoDigests}}' gcr.io/alpha/homeapp:latest

[gcr.io/alpha/homeapp@sha256:ce7395d681afeb6afd68e73a8044e4a965ede52cd0799de7f97198cca6ece7ed gcr.io/beta/homeapp@sha256:ce7395d681afeb6afd68e73a8044e4a965ede52cd0799de7f97198cca6ece7ed]

알파 결과를 사용하고 싶지만 어떤 인덱스가 될지 예측할 수 없습니다. 따라서 대괄호를 제거하고 각 항목을 별도의 줄에 표시하려면 텍스트 출력을 조작해야합니다. 거기에서 결과를 쉽게 확인할 수 있습니다.

$ docker inspect --format='{{.RepoDigests}}' gcr.io/alpha/homeapp:latest | sed 's:^.\(.*\).$:\1:' | tr " " "\n" | grep alpha

gcr.io/alpha/homeapp@sha256:ce7395d681afeb6afd68e73a8044e4a965ede52cd0799de7f97198cca6ece7ed