Motivation

 

  • Docker Repository를 Container Registry로 잘 사용하고 있었으나 무료 플랜의 경우 해당 이미지를 Private으로 설정할 수 없음.

  • ghcr(Github Container Registry)의 경우 Private 저장소를 500MB 까지 무료로 사용 가능

  • Public으로 관리할 수 있는 도커 이미지의 경우, Docker Repository를 활용해도 무방하나 ssh Token 혹은 Github Access Token등의 Credential이 포함된 경우 gchr을 통해 이미지를 관리하고자 함.

 

도커와 gchr 연동

 

먼저, gchr을 이미지 저장소로 활용하기 위해 Github Access Token을 발급받는다.

 

이는 본인 계정의 Settings > Developer Settings에서 발급이 가능하다. 이때 허용해줘야 하는 권한에는 다음이 있다.

 

  1. read:packages

  2. write:packages

  3. delete:packages

 

토큰이 발급되었다면 이를 통해 docker login 명령어를 통해 gchr.io에 로그인 해야한다.

 

이는 다음과 같이 수행이 가능하다.

 

이때 username 부분에 본인의 Github username을, Access Token Value 부분에 앞서 발급받은 키를 넣어준다.

docker login ghcr.io -u username --password "Access Token Value"



또는 다음과 같이 로그인한다.

 

echo "Access Token Value" | docker login ghcr.io -u username --password-stdin

 


로그인이 완료되었다면 이제 앞서 생성한 도커 이미지를 gchr에 업로드해보자. 먼저 해당 이미지가 gchr에 push 되기 위해서는 해당 이미지에 대한 태그를 통해 이를 표현해줘야 한다.

 

이는 다음과 같이 수행한다.

 

username에 본인의 github username을, container-name:tag에 push 하고자 하는 적절한 로컬 이미지를 입력해주면 된다.

 

이때 “ghcr.io/username/container-name:tag”에서 마지막에 위치한 container-name:tag가 github에서 볼 수 있는 해당 이미지의 이름이 된다.

 

docker tag container-name:tag ghcr.io/username/container-name:tag

 


이제 gchr에 push만을 남겨두고 있다.

 

push는 기존 Docker Registry에서 사용하는 것과 동일하되, 앞서 지정한 태그를 활용한다.

 

docker push ghcr.io/username/container-name:tag

 


업로드된 이미지는 Github Package에서 확인이 가능하다.