Github Container Registry(GHCR) 사용 방법

임원재·2025년 4월 8일

GHCR 사용 계기

  • Docker를 통해 배포를 진행할 때 DockerHub를 사용하여 이미지를 pull하고 push하는 방식을 사용하여왔다.
  • 하지만 개발하고있는 프로젝트를 모두가 접근 가능한 DockerHub에 올린다면 누구나 이를 pull받아 실행할 수 있다는 문제가 있다.
  • 무료 요금제로는 이미지 한개만 private으로 설정할 수 있다.
  • 여러 개의 서버를 배포하여 개발하는 입장에서 이미지 저장소로 DockerHub가 아닌 다른 저장소를 모색하였다.
  • 이에 조직 전체에서 공유 가능하고 private설정을 적용할 수 있는 Github Container Registry에 프로젝트 이미지를 저장시켜 배포 시 사용하도록 하였다.

사용 방법

  • GHCR를 활용하기 위해서는 github 개인 계정에서 Personal Access Token을 받급받아야 한다.
  • Settings > Developer Settings > Personal access tokens > Tokens (classic) > Generate new token

  • 이때 해당 토큰으로 패키지 관련 작업을 하므로 패키지를 읽고 쓰고 삭제하는 권한을 설정해줘야 한다.

  • write:packages에 체크하면 위에 repo관련 권한은 자동으로 체크된다.
  • 이를 통해 토큰 발급이 가능하다.

사용

로그인

echo "personal access token" | docker login ghcr.io -u username --password-stdin
  • 위에서 발급받은 토큰으로 도커에 로그인하여 ghcr.io에 접근 가능하다.
  • ghcr.io는 github container registry 주소로서 해당 주소를 통해 이미지에 접근한다.

이미지 build

docker build -t ghcr.io/<org.name>/<image.name>:<tag> .
  • 여기서 ghcr.io와 image.name 사이에는 본인의 username이나, organization의 이름을 입력하여 해당 이미지가 개인 계정의 소유가 될지 조직의 소유가 될지 결정할 수 있다.
  • 이때 username 혹은 organization name은 소문자로 작성한다.

이미지 push

docker push ghcr.io/<org.name>/<image.name>:<tag>
  • 이를 통해 github package에서 해당 이미지를 확인할 수 있다.

이미지 pull

docker pull ghcr.io/<org.name>/<image.name>:<tag>
  • 해당 명령어를 통해 이미지를 pull받을 수 있다.
  • pull전에 personal access token을 통해 도커 로그인하여 해당 이미지에 접근을 허가받아야 한다.

0개의 댓글