본문으로 바로가기
반응형

우리가 일반적으로 docker pull을 하는 방법은,

$ docker pull [options] NAME:TAG 의 형식이다.

 

하지만, 최근에 Tag가 아닌 Sha256 Digest을 사용해 특정 이미지를 pull 할 수 있다는 것을 알게 되었다.

친절하게도 docs.docker.com의 docker pull 항목에도 다음과 같이 나와 있다.

 

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

 

실제로 pull이 어떻게 이루어 지는지 확인해 보자.

 

 

1. busybox 이미지를 받아서 tag를 두 개 만든다.

 

 

 

v1.0과 v2.0 이라는 이름의 두 개의 tag를 생성했다.

 

 

2. 두 개의 tag를 레지스트리에 push 한다.

 

 

push하고 나면 각 이미지의 sha256 digest값을 알 수 있다.

완전히 동일한 이미지이고 tag만 딴 것이기 때문에 sha256 값은 두 개의 tag가 동일하다.

즉, 실제 레지스트리에 등록된 tag는 다음과 같이 두개이지만 실제로 등록된 정보는 하나라는 의미이다.

(사실 이것도 위 터미널 메시지를 보면 알겠지만 libary/busybox와 동일하기 때문에 물리적으로 업로드된 이미지는 없다고 할 수도 있다.)

 

 

3. sha256 digest으로 pull 해보자.

 

(우선 image를 pull 하기 전에 기존에 받았던 busybox와 두개의 tag를 삭제한 뒤 pull 명령을 실행했다.)

 

 

@sha256을 사용해서 이미지 다운로드가 완료되었다.

 

 

4. 잘 받아졌는지 확인해 보자.

 

 

뭔가 이상한 점을 찾아볼 수 있을 것이다.

tag 부분이 none으로 표시된다.

해당 sha256 digest에 해당하는 tag를 붙여서 pull이 되지 않는 이유는 간단하다. 아까 위에서도 보았듯 똑같은 digest를 갖는 tag는 무수히 많을 수 있다. docker는 해당 digest에 해당하는 이미지를 받아 왔지만, 이 이미지의 tag가 무엇인지는 알 수 없기 때문이다.

 

 

추가 ) docker pull 뿐만 아니라 Dockerfile을 작성할 때도 마찬가지로 sha256 digest를 활용할 수 있다.

 

Dockerfile

FROM catchup/busybox@sha256:030fcb92e1487b18c974784dcc110a93147c9fc402188370fbfd17efabffc6af

.....
.....
.........
반응형

 Other Contents