개발일기

(14) 이미지 레지스트리 (pull, push) 본문

서버 & 클라우드/도커

(14) 이미지 레지스트리 (pull, push)

한둥둥 2026. 2. 16. 11:18

 

맨 위에 있는 nginx가 도커의 공식 오피셜 nginx 이다. 

 오피셜 이미지 말고도 verified publisher라는 것은 도커에서 관리하는 이미지는 아니지만 어느정도 규모가 있는 회사에서 자체적으로 인증한 이미지이기 때문에 다른 이미지보다 더 신뢰할 수 있다고 볼 수 있다. 

 

맨 위에 official nginx 클릭해보면 상세 페이지에서 다운로드 수와 좋아요 수도 확인할 수 있다.

태그에 스테이블이 붙어 있는 이미지들은 안정적인 버전이라고 생각하면 된다. 

알파인이라고 써져 있는 부분은 nginx 이미지를 만들기 위해서 베이스 이미지로 사용했던 OS의 버전을 의미한다. 

각각의 이미지 버전에 해당하는 파일 크기도 확인할 수 있다.  끝에 SLIM이라고 붙은 이미지는 크기각 5MB 밖에 안된다. 

이런 이미지들은 보통 프로그램 실행에 정말 필요한 것들만 남겨놓고 나머지 부분들은 모두 제거한 이미지이다. 

디버깅이 쉽지 않고, 실제 사용하기엔 부족할 수 있다. 대신 이미지가 작기 때문에 이미지를 전송하는데 시간이 적을 수 있다. 

 

docker pull 이미지명 
로컬 스토리지로 이미지 다운로드 

docker tag 기존이미지명 추가할 이미지명 
로컬스토리지의 이미지명 추가 

docker push 이미지명 
이미지 레지스트리에 이미지 업로드

 

 

이미지를 다운로드하고, 업로드하기 위헤서 새로운 명령어들을 학습해보자. 

먼저 이미지를 다운로드 받을 때는 도커 풀 뒤에 다운로드 받을 이미지의 이름을 입력해주면 된다. 여기에 들어가는 이미지의 이름은 이전 시간에 배웠던 이미지의 네이밍 규칙에 따라서 작성해 주면 된다. 

 

도커 태그 명령에는 기존에 가지고 있는 이미지명과 새롭게 추가할 이미지명을 입력해주면 된다. 

 

마지막으로 도커 푸쉬 명령뒤에 이미지를 입력하면 이미지를 레포지토리에 푸쉬 할 수 있다. 

 

 

이미지 아이디가 devwikirepo/simple-web과 hanseu9839/my-simple-web이 똑같은 것을 볼 수 있다 이유는 이미지가 여러개여도 파일이 똑같다는 의미이다. 즉, 하나의 이미지에 여러 개의 이름을 추가할 수 있는 형태이다. 

이렇게 이미지 이름을 여러개 주는 이유는 같은 파일이라도 이미지 이름에 따라서 어디에 푸쉬되는지가 결정되기 때문이다. 

파일은 그래도 있고, 이미지 명에 따라서 업로드 하는 곳이 달라지게 되는 것이다. 

이렇게 이미지를 원하는 곳에 업로드하고 싶은 경우에는 이미지의 네이밍 규칙을 활용해서 업로드 할 곳의 이미지로 변경한다. 

 

 

 

중간에 작업하다가 로그인 안되는 문제가 발생함. 

denied: requested access to the resource is denied

 

분명히 docker login을 했었는데. 레포지토리에 업로드 하는데 권한이 없다고 나온다. 

그래서, 일단 로그인한 계정이 진짜 로그인 되어있는지 여부부터 확인했다. 

 

The push refers to repository [docker.io/hanseu9839/my-simple-web]
18ed62388584: Mounted from devwikirepo/simple-web 
1edd912be836: Mounted from devwikirepo/simple-web 
d28ce0e71605: Mounted from devwikirepo/simple-web 
9dcfeedea1f1: Mounted from devwikirepo/simple-web 
751582986147: Mounted from devwikirepo/simple-web 
f4b89c02f13e: Mounted from devwikirepo/simple-web 
cadc9ff5e4f3: Mounted from devwikirepo/simple-web 
d64c46ff900c: Mounted from devwikirepo/simple-web 
1.0: digest: sha256:7506058e29d6c761a81115a55fd448ed383bcbe9ee64021966f641e4586a0759 size: 1985

 

 

docker hub에 들어가서 계정 정보를 리셋하니깐 정상적으로 로그인이 가능했다. 

 

cat ~/.docker/config.json

 

 

 

docker push를 통해서 이미지를 업로드 하였다. 

docker hub에 들어가면 이미지가 업로드 되어있는 것을 확인 할 수 있다.

 

 

sh-3.2# docker run -d -p 80:80 --name my-simple-web hanseu9839/my-simple-web
Unable to find image 'hanseu9839/my-simple-web:latest' locally
latest: Pulling from hanseu9839/my-simple-web
Digest: sha256:7506058e29d6c761a81115a55fd448ed383bcbe9ee64021966f641e4586a0759
Status: Downloaded newer image for hanseu9839/my-simple-web:latest
b2a648404694fb6344632765aeb8463c62578b53ff3e5b9c4501bfe2654fcf80