Docker

[Docker] 6-6 도커 허브 등록 및 로그인

patrick-star 2023. 5. 29. 17:06
728x90

이번에는 다른 사람에게 이미지를 공유하는 방법에 대해 알아본다.

이미지를 내려받는 곳

지금까지 내려받았던 이미지도커 허브에 저장된 것이다.

만약 직접 만든 이미지를 다른 사람들에게 공유하고 싶다면 도커 허브에 이미지를 올리면 된다.
또는 비공개로 사용하는 도커 허브 같은 장소도 만들 수 있다.

도커 허브와 도커 레지스트리

도커 레지스트리란 이미지를 배포하는 장소를 의미한다.
공개/비공개 여부와 상관없이 이미지가 배포되는 곳은 모두 도커 레지스트리이다.

도커 레지스트리는 기업이나 개인도 운영할 수 있으므로 전 세계적으로 많은 도커 레지스트리가 존재한다.
다만, 외부에 공개되어 있지 않다면 도커 레지스트리에 접속할 수 없기 때문에 거기에 있는 이미지를 사용할 수 없다.

도커 허브Docker 제작사에서 운영하는 공식 도커 레지스트리를 말한다.
아파치, MySQL, 우분투의 공식 이미지 모두 도커 허브에 참여해 도커 허브에 이미지를 배포한다.

레지스트리(registry) vs 리포지토리(repository)

  • 레지스트리 : 이미지를 배포하는 장소
  • 리포지토리 : 레지스트리를 구성하는 단위

ex) CAT이라는 회사가 A, B라는 소프트웨어를 만든다고 하자

그러면 CAT이라는 이름의 도커 레지스트리를 구성하는 것들로 A 리포지토리, B 리포지토리가 존재하게 된다.

도커 허브에는 리포지토리가 각각 ID를 갖게 되어 있다.
따라서, 도커 허브는 각각의 회사나 개인이 가진 레지스트리가 여럿 모인 형태가 된다.

태그와 이미지 업로드

이미지를 업로드 할 때 태그를 부여해야 한다.

이미지 이름과 태그

태그는 아래의 형식을 가진다.

레지스트리_주소/리포지토리_이름:버전

위 형식을 통해 레지스트리 주소버전을 추가해 정식명칭을 만든다.
버전은 생략할 수 있지만 나중에 다루기 복잡해질 수 있기 때문에 따로 관리하고 싶다면 붙이는 것이 좋다.

ex) 여러 상황의 예시

상황 태그
자신의 PC에서 만든 레지스트리 & 리포지토리 이름은 my, 버전은 13 localhost/my:13
레지스트리 도메인이 zozo.comm & 리포지토리 이름은 my, 버전은 13 zozo.comm/my:13
도커 허브의 ID가 dododo & 리포지토리 이름은 my, 버전은 13 dododo/my:13

이미지에 태그를 부여해 복제하는 커맨드

기본적인 내용은

1) 원래 있던 이미지 이름을 태그로 변경
2) 이름이 변경된 이미지를 복제하는 동작을 실행

  • 기본 형식
docker tag 원래_이미지_이름 레지스트리_주소/리포지토리_이름:버전 

그렇기 때문에 위 명령어를 실행하고 나서 이미지 목록을 확인해보면 원래 이미지태그가 부여된 이미지 둘 다 존재한다는 걸 알 수 있다.

이미지를 업로드하는 커맨드 (docker push 커맨드)

  • 기본 형식
docker push 레지스트리_주소/리포지토리_이름:버전 

(간단히 말하면 docker push 태그)

태그는 레지스트리_주소/리포지토리_이름:버전 형식의 하나의 이름이다.
여기에 같이 작성된 레지스트리 주소를 통해 어느 레지스트리로 업로드할 지 태그로 판단할 수 있다.

즉, 도커 엔진은 태그에 포함된 레지스트리 주소의 도메인에 있는 레지스트리로 업로드를 시도한다.

리포지토리는 처음 업로드 할 때는 존재하지 않고 push 커맨드를 실행하면서 생성된다.

레지스트리 만드는 방법

비공개 레지스트리 만들기

간단하게 레지스트리를 만드는 공식 이미지(registry)를 사용해서 컨테이너를 만들면 된다.
즉, 레지스트리도 도커를 통해 운영할 수 있다.

그렇게, 컨테이너를 만들면 사용자는 레지스트리에 로그인한 다음에 이미지를 저장할 곳으로 앞서 만든 레지스트리를 지정하면 된다. 이때, 포트는 5000번을 사용한다.

docker run -d -p 5000:5000 registry

도커 허브 사용

도커 허브 주소 해당 주소에 가입해서 이용하면 된다.

내가 만든 이미지를 도커 허브에 업로드하면 전 세계 사람들에게 이미지를 공개할 수 있다. 물론, 비공개 설정을 하면 이미지를 공개하지 않을 수도 있다.

  • push 커맨드로 respository를 만들었다면 자동으로 public 상태가 된다.

출처 : 그림과 실습으로 배우는 도커 & 쿠버네티스