Docker & Kubernetes

도커 허브 저장소(Docker Hub Registry)에 이미지 배포하기

beekei 2022. 12. 29. 16:55
반응형

save나 export와 같은 방법으로 이미지를 단일 파일로 추출해 배포할 수도 있지만 이미지 파일의 크기가 너무 크거나 도커 엔진의 수가 많다면 이미지를 파일로 배포하기 어렵다. 또한 도커의 이미지 구조인 레이어 형태를 이용하지 않으므로 매우 비효율적이다.

 

이를 해결하는 방법은 도커 허브(Docker Hub)를 사용하거나 도커 사설 레지스트리(Docker Private Registry)를 사용하는 방법 등 여러 가지가 있다.

도커 허브 사이트에서 이미지를 검색할 수 있고, 해당 이미지에 대한 정보도 확인이 가능하다.

도커 허브 저장소 생성

도커 허브에 이미지를 올리기 위해 로그인 후 저장소를 생성한다.

기본적으로 비공개(Private) 저장소가 아니라면 모든 사용자들이 읽기 권한을 가지게 된다.

비공개(Private) 저장소는 1개까지만 무료로 제공한다.

만약 저장소가 없다면 이미지를 올릴 때 자동으로 생성되니 딱히 만들지 않아도 상관없다.

저장소에 이미지 올리기

저장소에 이미지를 올리려면 이미지 이름을 <사용자명>/<저장소명>:<태그> 형태로 변경해야 한다.

docker tag 명령어를 사용해 이미지의 이름과 태그를 변경할 수 있다.

$ docker tag ubuntu:20.04 devbeekei/myubuntu:0.1

tag 명령어는 이미지 이름과 태그가 변경되는 것이 아닌 기존 이미지를 복제해 새로운 이름과 태그로 생성된다.

$ docker images
REPOSITORY                         TAG       IMAGE ID       CREATED         SIZE
devbeekei/myubuntu             	   0.1       d5447fc01ae6   2 weeks ago     72.8MB
ubuntu                             20.04     d5447fc01ae6   2 weeks ago     72.8MB

이미지 이름을 변경했다면 docker login 명령어를 사용해 사용자 이름과 비밀번호를 입력해 도커 허브 서버에 로그인을 해야 한다.

$ docker login -u devbeekei
Password:
Login Succeeded

Logging in with your password grants your terminal complete access to your account.
For better security, log in with a limited-privilege personal access token. Learn more at https://docs.docker.com/go/access-tokens/

로그인에 성공했으면 docker push 명령어를 이용해 저장소에 이미지를 올릴 수 있다.

$ docker push devbeekei/myubuntu:0.1
The push refers to repository [docker.io/devbeekei/myubuntu]
0002c93bdb37: Mounted from library/ubuntu
0.1: digest: sha256:8eb87f3d6c9f2feee114ff0eff93ea9dfd20b294df0a0353bd6a4abf403336fe size: 529

push에 성공했다면 도커 허브에 해당 리포지토리를 확인해보면 이미지가 올라와 있는 것을 확인할 수 있다.

저장소 웹훅(webhook) 설정

도커 허브의 웹훅 기능은 저장소에 새로운 이미지가 push 됐을 때 지정된 특정 URL로 해당 이미지의 정보와 함께 http 전송할 수 있다.

이 기능은 저장소에 추가된 새로운 이미지를 각 서버에 배포하는 애플리케이션을 작성할 때 유용하게 활용될 수 있다.

반응형