GCR 이미지 Public으로 공개 하기

Google Container Registry(이하 GCR)에 올려놓은 이미지를 공개적으로 접근할 수 있도록 하려면 해당 프로젝트의 이미지들이 올라가있는 Storage Bucket을 공개적으로 설정해야 한다. 그러므로 해당 프로젝트에 업로드 된 모든 이미지들이 공개가 되니 주의해야 한다.

Push a image to a registry

먼저 GCR에 이미지를 올린다.

Docker Build

Docker 명령어를 이용해서 이미지를 빌드한다. 이 때 모든 아규먼트들을 적절히 입력한다.

export VERSION_TAG=$(date +%s)
export TRAIN_IMG_PATH=us.gcr.io/${PROJECT_ID}/kubeflow-train:${VERSION_TAG}
docker build -t ${TRAIN_IMG_PATH} ${DOCKER_PATH} \ 
	--build-arg version=${VERSION_TAG}

Docker Test locally

GCR에 이미지를 올리기 전에 미리 테스트를 해본다.

docker run -it ${TRAIN_IMG_PATH}

Allow Docker to access GCR

Private하게 이미지를 올리고 그 이미지에 접근하기 위해서는 다음과 같이 인증해줘야한다.
Public하게 올려놓을 때는 필요없다.

gcloud auth configure-docker

Make The Storage Bucket Publicly Accessible

  1. 먼저 gcp api를 사용할 수 있는 서버나 Cloud shell에서 버킷의 이름을 검색한다.
gsutil ls
  1. 1번에서 명령어를 사용해서 검색한 리스트 중에 Container Registsry Bucket을 찾는다. Container Registry Bucket의 URL은 gs://artifacts.[PROJECT-ID].appspot.com or gs://[REGION].artifacts.[PROJECT-ID].appspot.com 와 같은 형태이다.
  2. 2번에서 찾은 버킷의 접근 권한을 변경한다.
gsutil iam ch allUsers:objectViewer gs://[BUCKET_NAME]