본문 바로가기

Container/생활코딩 Docker

[Docker] 내가 만든 image를 Github Container 레지스트리에 업로드하기

반응형

🔊 해당 포스팅은 이고잉님의 생활코딩 오픈튜토리얼의 Docker 입문 수업을 듣고 제 개인적으로 정리하는 목적하에 작성되는 포스팅입니다. 보다 자세한 강의는 여기를 참고해주세요.

 

이번 포스팅에서는 Docker에서 내가 만든 이미지를 Docker Hub 레지스트리가 아닌 Github Container 레지스트리에 업로드 하는 방법에 대해 알아보자. 

 

Docker


저번 포스팅에서 내가 만든 이미지를 Docker Hub 레지스트리에 push하고 pull 하는 방법에 대해 배워보았다. 그런데 이러한 훌륭한 Docker Hub을 납두고 왜 Github의 Container 레지스트리를 이용할까? Docker Hub은 Private한 레지스트리 즉, 모두에게 공개되지 않고 나만 또는 나와 협업하는 특정 사람들 간에만 공유하기 위한 Private한 공간에 나의 이미지를 push하려면 유료 비용을 지출해야 한다. 하지만 Github의 컨테이너 레지스트리를 이용하면 어느 정도 용량 제한은 있지만 무료라는 장점이 있다!

 

자, 그러면 이제 내가 만든 이미지를 Github의 컨테이너 레지스트리에 push 하는 과정에 대해 알아보자. 가장 먼저 해야할 부분은 Github 컨테이너 레지스트리에 로그인하기 위해 필요한 PAT(Personal Access Token)이 필요하다. PAT는 아래와 같이 Github 홈페이지의 Settings -> Developer Settings -> Personal Access Token 탭으로 들어가면 된다. 그리고 하나의 토큰을 발행받는다.

 

PAT를 발급받자

 

주의해야 할 점은 PAT를 발급받고 한 번 브라우저에 표출된 후 리로드하면 다신 안보여서 재발급해야 하니 표출된 PAT는 따로 메모장에 적어두거나 하자.

 

그런 다음 이제 컨테이너 레지스트리를 인증 받아야 한다. 자세한 가이드 원본은 여기를 참조하자. 인증을 받기 위해 위에서 발급 받은 PAT를 로컬 터미널의 환경변수로 지정해주자. 

 

PAT를 환경변수로 설정하기

 

로컬 터미널에서 환경변수로 지정하자.

 

이제 환경변수 입력까지 완료했으니 Github의 컨테이너 레지스트리에 로그인 해보자. Docker Hub에 로그인하는 명령어는 docker login만 입력시키면 되지만 Gihtub의 컨테이너 레지스트리로 로그인 하려면 별도의 명령어가 필요하다. 위 사진에 나와있긴 하지만 다시 말하면 아래와 같다.

 

echo $CR_PAT | docker login ghcr.io -u [Gihtub username] --password-stdin

 

그러면 아래와 같이 로그인이 정상적으로 접근이 가능하다.

 

로그인 성공!

 

이제 그러면 임의로 나만의 이미지를 하나 만들어보고(ubuntu로 하나 만들자) Github의 컨테이너 레지스트리에 push 시켜보자. 나만의 이미지를 만드는 과정은 지난 시간에 많이 해보았으므로 여기에서는 생략하겠다. 단, 주의해야 할 점은 Github 가이드에도 소개되어있다 시피 만들 이미지의 이름 형식을 아래와 같이 꼭 지켜주어야 한다.

 

Github에 이미지를 push할 때 만들 이미지의 이름 포맷을 지키자.

 

위 사진에서 OWNER은 Github의 본인 username 이고 IMAGE_NAME은 그야말로 이미지 이름, lateest는 해당 이미지의 TAG이다. 이제 아래와 같이 이미지를 push 시켜보자.

 

Github의 컨테이너 레지스트리에 push가 완료되었다!

 

이제 Github의 어디에 push 되었는지 살펴보자. Github 프로필을 눌러서 packages 탭에 들어가면 아래와 같이 내가 만든 이미지의 이름인 ubuntu2 라는 이미지가 업로드 되어 있다.

 

 

해당 패키지를 눌러보면 Private에서 Public으로 바꾸는 설정도 있고 흥미로운 점은 개인 레포지토리와도 연결이 가능하다. 하나의 임시 레포지토리 ubuntu2 라는 이름으로 만들어보고 방금 업로드한 패키지로 들어가 아래의 버튼을 눌러 ubuntu2 라는 레포지토리와 연결해보자.

 

초록색 버튼을 눌러 연결하자.

 

그리고 방금 만든 ubuntu2 라는 레포지토리로 들어가면 packages 탭에 내가 방금 업로드한 my-ubuntu2 라는 컨테이너가 연결되어 있다.

 

레포지토리와 업로드한 컨테이너와 연결이 되어있다

 

또 한 가지 특이한 점은 해당 ubuntu2라는 레포지토리의 READE.md 파일은 연결되어 있는 패키지 즉, my-ubuntu2라는 컨테이너에도 README.md가 생겨나고 이 2개의 README.md가 동기화되어 하나를 수정하면 같이 수정되는 것도 볼 수 있다.


끝으로, 인카토스라는 회사에서 감사하게도 제게 협찬을 해주신 제품을 하나 소개하려고 합니다. 그것은 바로 아래 사진의 Docker 컨테이너 각티슈 케이스입니다!

 

인카토스에서 협찬해주신 Docker 컨테이너 각티슈 휴지 케이스

 

개발 공부를 하다 보면 원인불명의 에러 때문에 땀을 흘리거나 눈물(?)을 흘리기도 하는데요! 겨울철엔  감기라도 걸리면 모니터 앞에서 콧물을 흘리기도, 한여름엔 개발을 너무 열심히 한 나머지 땀을 흘리기도 합니다.

 

하지만 이 제품을 곁에 두고 개발을 하게 되면 귀여운 Docker 컨테이너가 제공하는 티슈 한 장을 편하게 뽑아 쓰면서 개발 텐션을 끊지 않고 이어갈 수 있답니다~!  특히, 마치 개발 관련 장비를 하나 늘린 것처럼 마음이 한켠 든든해지는 기분입니다! 해당 제품에 관심이 있으시다면 아래 링크로 들어가시면 됩니다. 다시 한 번 좋은 제품을 협찬해주신 인카토스에 감사인사 드립니다! :)

 

💡 판매처 인카토스 : https://incatos.shop/

 

반응형