[Docker] Github Container Registry 사용하기

Github Container Registry

Github에서는 Github Packages라는 이름으로 Docker 이미지를 지원하고 있었으나 20년도에 Github Container Registry가 발표되었고 Github Packages의 Docker 이미지는 Container Registry로 대체되었다.

기존 Packages에서는 docker.pkg.github.com 주소를 사용했지만, Container Registry는 ghcr.io를 사용한다.


Container Registry를 사용하려면 액세스 토큰이 필요하다.
https://github.com/settings/tokens에서 패키지에 대한 권한을 가진 토큰을 생성해야 한다.

  • write: packages
  • read:packages
  • delete:packages

image


이 토큰을 TOKEN.txt에 저장했다고 하면 다음과 같이 Github Container Registry에 로그인할 수 있다.

$ cat TOKEN.txt | docker login https://ghcr.io -u ${GITHUB_USERNAME} --password-stdin
Login Succeeded

테스트로 사용할 yshrim12/lotto 이미지를 사용해서 ghcr.io/{OWNER>/image_test:0.1 이라는 태그를 추가한다.

$ docker tag yshrim12/lotto ghcr.io/${GITHUB_USERNAME}/image_test:0.1

$ docker images | grep "ghcr.io.*"
ghcr.io/jaehyojjang/image_test   0.1       537ef80c8483   22 minutes ago   136MB

Container Registry는 ghcr.io/<OWNER>/<IMAGE-NAME>의 형식을 사용한다. 참고로 Container Registry는 Packages와 달리 저장소에 생기는게 아니라 사용자나 조직 같은 계정 밑에서 관리가 되기 때문에 주소에 저장소 이름이 들어가지 않는다.


이제 ghcr에 로그인을 했으므로 이미지를 푸시할 수 있게 되었다.

$ docker push ghcr.io/jaehyojjang/image_test:0.1

컨테이너 이미지 저장소 관리

위에서 푸시한 이미지는 자신의 계정의 패키지 탭에서 볼 수 있다
(https://github.com/jaehyojjang?tab=packages)
image


방금 올린 이미지가 등록되어 있는 것을 볼 수 있고 현재 Private로 등록된 상태이다. 이미지를 클릭하면 올라온 버전과 pull 방법 들을 자세히 알 수가 있다.
image


패키지 설정에 들어가면 누구나 해당 이미지를 받을 수 있도록 Public으로 변경할 수 있다.
image

마무리

당연한 애기겠지만 Private로 설정되어 있는 이미지의 경우 로그인 하지 않으면 다운로드 받을 수 없다.

관련 글

지식 공유2분 읽기

[Docker] 컨테이너(Container)에 할당되는 CPU 제한하기

개요 이번 게시글에서는 도커 컨테이너에서 CPU를 최적으로 활용하는 방법에 대해서 기록해보려고 한다. 호스트 CPU Core 정보 확인 먼저 컨테이너에 CPU를 최적으로 할당하기 위해서는, 현재 호스트 시스템의 CPU 정보에 대해서...

도커
지식 공유1분 읽기

[Docker] 배그 최고급 꾸러기 시뮬레이터 배포

개요 최고급 꾸러미에 대한 확률 체감을 위한 시뮬레이터 프로그램을 구현하고 도커로 배포하였음. 배포 로직은 AWS EC2 인스턴스에 도커를 사용하여 nginx proxy manager를 배포하고 리버스 프록시로 홈 서버에 있는 시뮬레...

도커