Container/Docker

[Docker CE] GCP Private Registry 구축 (Google Cloud Platform 사용)

Nirsa 2020. 1. 21. 13:13
반응형

 

GCP(Google Cloud Platform)을 사용한 Docker Private Registry 구축 입니다.

GCP에 미리 계정을 등록 해두어야 하고 구글 계정에 신용카드 또는 계좌가 등록 되어 있으면 편합니다. (1년간 무료로 이용이 가능하고, 신용카드 또는 계좌를 등록하는 이유는 자동 가입을 막기 위해서라고 합니다. 1년 후 자동으로 유료버전으로 전환되지 않습니다.)

 

무료 버전 등록은 http://cloud.google.com 에서 구글 계정 로그인 후 무료로 실행하기를 눌러서 진행 하시면 됩니다.

 

  • 1. Google Container Registry API 연동

GCP에서 Docker 이미지를 관리할 수 있는 Google Container Registry API를 제공 합니다.

GCP 무료 버전을 실행 하였으면 좌측의 API 및 서비스 → 라이브러리 클릭 합니다.

 

검색창에 Google Container Registry 를 검색 후 나오는 결과를 클릭 합니다.

 

사용 설정을 클릭 하면 Google Container Registry API를 사용하기 위한 연동이 완료 됩니다.

 

  • 2. Google Cloud SDK 설치

python 2.7버전이 필요하기 때문에 우선 리눅스에서 python -v 으로 버전을 확인해줍니다.

GCP로부터 이미지를 업로드 받거나 다운로드 받을 때 gcloud 라는 명령어가 필요 하기 때문에 Cloud SDK를 설치해야 합니다. ( CentOS 7 minimal을 기준으로 작성 합니다. )

우선 아래와 같이 tee 명령어 및 내용을 작성 후 sdk를 설치 해주세요.

sudo tee -a /etc/yum.repos.d/google-cloud-sdk.repo << EOM

[google-cloud-sdk]
name=Google Cloud SDK
baseurl=https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
       https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOM

yum install google-cloud-sdk

 

** 만약 GUI 환경이 가능하신 경우 아래 명령을 따라갈 필요 없이 gcloud init 치셔서 몇번 넘기시다가 나오는 URI를 웹브라우저에 복사+붙여넣기 하셔서 코드를 인증하시고 끝나시면 gcloud auth login 만 입력하시면 됩니다.

 

이후 GCP 콘솔창에서 좌측의 메뉴 중 IAM 및 관리자 → 서비스 계정을 클릭 한 후 서비스 계정 만들기를 클릭 합니다.

 

 

이후 서비스 계정의 이름은 원하는데로 적어 주시고 아래처럼 권한을 프로젝트 → 소유자로 만들어 줍니다.

 

다음으로 넘어가서 키 만들기 → JSON 형식으로 만든 후 완료를 눌러서 마무리 합니다. (키 만들면서 다운로드되는 json 파일을 반드시 보관 해주세요)

 

키를 만들면서 다운로드된 json 파일을 리눅스의 /usr/lib64/google-cloud-sdk/bin 으로 옮깁니다.

이제 아래 명령어를 통해 서비스 계정 인증을 위해 아래 명령어를 입력해줍니다. (만약 gcloud 커맨드를 찾지 못한다면 /usr/lib64/google-cloud-sdk/bin 으로 이동하셔서 ./gcloud 로 사용 해주세요) 

gcloud auth activate-service-account --key-file=/usr/lib64/google-cloud-sdk/bin/[옮긴 json파일명]
gcloud auth configure-docker

# gcloud 커맨드를 인식하지 못할 경우
cd /usr/lib64/google-cloud-sdk/bin/
./gcloud auth activate-service-account --key-file=/usr/lib64/google-cloud-sdk/bin/[옮긴 json파일명]
./gcloud auth configure-docker

 

json 파일도 인증이 완료 되었다면 리눅스에서 삭제 해줍니다. (gcloud CLI가 키를 저장하여 리눅스에서 삭제해도 계속 유지된다고 합니다)

 

  • 3. 도커 이미지 업로드 / 다운로드

도커 이미지를 업로드 하기 전 이미지의 태그를 설정해주어야 합니다.

# docker tag [로컬 이미지명] [Google Container Registry 호스트명]/[프로젝트 ID]/[이미지명]
ex) docker tag centos:7 asia.gcr.io/[프로젝트 ID]/centos

Google Container Registry 호스트명은 이미지 저장 위치에 따라 아래 중 하나를 사용하시면 되고, 프로젝트 ID는 GCP 콘솔 홈에서 확인하실 수 있습니다.

  • us.gcr.io : 미국
  • eu.gcr.io : 유럽
  • asia.gcr.io : 아시아

 

push 후 재대로 업로드 되었는지 확인 하고, 아래 이미지와 같이 콘솔 홈에서 좌측 메뉴를 내리다보면 Container Registry 클릭 → 이미지 클릭 하시면 업로드한 이미지를 확인할 수 있습니다.

# docker push [Google Container Registry 호스트명]/[프로젝트 ID]/[이미지명]
docker push asia.gcr.io/[프로젝트 ID]/centos

 

이후 기존에 있던 이미지를 삭제한 후 정상적으로 다운로드 되는지 확인 합니다.

# docker pull [Google Container Registry 호스트명]/[프로젝트 ID]/[이미지명]
docker pull asia.gcr.io/[프로젝트 ID]/centos

 

반응형