자신의 Docker 개발환경을 Container Registry 와 연동하기

2021. 6. 25. 17:11Cloud

이 글에서는 GCP 외부의 Dokcer 개발환경 도는 GCP의 VM과 Container Registry 를 연동하는 방법을 알아본다.

 

Google Container Registry (GCR)이란?

GCP 내에 Docker 컨테이너 이미지를 저장, 관리할 수 있는 Docker Registry 이다. 매우 간단하게 Private 또는 Public Docker Registry를 구축할 수 있다. 이 글에서는 GCP 내에 Container Registry 를 사용하고 있다는 전제로 개발환경과의 연동방법을 설명한다.

 

https://cloud.google.com/container-registry

 

GCP 외부서버(Ubuntu 20.04) 와 GCR 연동

자신의 개인 또는 사내환경에 있는 Ubuntu 서버와 GCR을 연동해보자. 지금까지 알아본 바로는 GCR의 인증설정을 하기 위해서는 docker-credential-gcr 이라는 helper를 설치해야 한다. 이 helper 를 설치하기 위해서는 GO Lang 을 설치해서 빌드해야 하는데 이게 좀 귀찮다. 혹시나 다른 편한방법이 있다면 또 업데이트 하겠다.

 

GO Lang 설치

먼저 GO 를 설치해주자. 설치하는 스크립트를 만들어 두었으니 필요하면 가져다가 이대로 설치하면 된다. (스크립트 상은 1.16.5 버전이다) 직접 설치할 분은 공식 사이트에서 설치해주면 된다.

 

https://golang.org/

 

docker-credential-gcr 설치

GCP의 깃헙의 아래 링크를 따라서 설치해주면 된다.

https://github.com/GoogleCloudPlatform/docker-credential-gcr

 

 

docker-credential-gcr 설정

# Docker와 연계
docker-credential-gcr configure-docker
 
# GCP 본인 계정으로 로그인
docker-credential-gcr gcr-login
 
# 프로젝트 설정이 필요하다는 메세지가 뜨면 프로젝트명을 입력해 준다.

 

GCP VM(Ubuntu 20.04)와 GCR 연동

GCP VM(GCE)에는 gcloud가 기본설치 되어있어, 간편하게 GCR로 이미지 Push / Pull이 가능하다. 아래 세팅만 해주면 바로 GCR 이용이 가능하다. 

 

 # GCP 계정으로 로그인
gcloud auth login
 
# Docker 와 연계
gcloud auth configure-docker

 

테스트

docker push asia.gcr.io/<프로젝트명>/<도커 이미지명>

또는

docker push gcr.io/<프로젝트명>/<도커 이미지명>

asia.gcr.io 를 사용할지 gcr.io 를 사용할지는 GCP Console 에서 설정할 수 있다. 보통 두 개 모두 사용 가능하다.

 

주의사항

docker-credential-gcr 설정을 적용한 Ubuntu 계정으로만 push 할 수 있다는 점에 주의하자. 예를 들어 위 설정을 해두었는데 그 계정에 docker 권한이 없다면 push가 되지 않는다. 이 경우에는 해당 Ubuntu계정에 docker 명령어를 사용할 수 있도록 권한을 주자.

 

sudo groupadd docker # docker 그룹이 없을경우
sudo usermod -aG docker $USER # 자신의 유저명
newgrp docker