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
이 토큰을 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)
방금 올린 이미지가 등록되어 있는 것을 볼 수 있고 현재 Private로 등록된 상태이다. 이미지를 클릭하면 올라온 버전과 pull 방법 들을 자세히 알 수가 있다.
패키지 설정에 들어가면 누구나 해당 이미지를 받을 수 있도록 Public으로 변경할 수 있다.
마무리
당연한 애기겠지만 Private로 설정되어 있는 이미지의 경우 로그인 하지 않으면 다운로드 받을 수 없다.