2023年1月26日

GCP Artifact Registry

GCP Artifact Registry

簡介 GCP Artifact Registry,並提供範例,逐步介紹將 Docker Image Push 至 GCP Artifact Registry。

Artifact Registry 改進原有的 Container Registry,可以同時存放 container images 與 non-container artifacts,如 Maven、npm、Python、Apt、Yum、Kubeflow Pipelines 等套件。

文章範例執行於 Windows 11 環境,使用 PowerShell 7.3.1。

GCP Push and pull images

前置作業

  1. 建立 GCP Project (本範例為 artifact-registry-dyson)
  2. 本機需要安裝 Docker

Google Cloud CLI Installer

若您尚未安裝 gcloud CLI,可參考下列網頁進行安裝: Install the gcloud CLI

安裝後,會詢問是否要登入與選擇預設的專案名稱。完成後, 便可以在 PowerShell 輸入 gcloud 指令了。

Create Repository

選擇您想要加入的 GCP Project,新增 Artifact Registry,相關設定選項如下:
- Name: quickstart-docker-repo (Repository 名稱,您可自行設定)
- Format: Docker
- Location Type: Region
- Region: us-central1
Region 也可以選擇 asia-east1 (Taiwan),機房位於彰濱工業區。

設定授權

執行下列指令,將修改 docker configuration 內容:

gcloud auth configure-docker \
  us-central1-docker.pkg.dev

若 Region 選擇 asia-east1,那麼上列指令,則改為:

gcloud auth configure-docker \
  asia-east1-docker.pkg.dev

檢查 docker configuration,會發現新增了 credHelpers 區塊。執行下列指令:

cat $env:UserProfile\.docker\config.json

顯示結果如下:

{
"credsStore": "desktop",
"credHelpers": {
  "us-central1-docker.pkg.dev": "gcloud"
  }
}

Pull Docker Image

接下來,您可以自行開發或由 Docker Hub 取得 Docker Image:

docker pull nginx

Tag Docker Image

在 push docker image 之前,先將剛才新增的 container registry,以 respository name 透過 tag 加入 docker image 中。

Tag 的規則是 <hostname>/<project-name>/<repository-name>/<image-name>:<tag>

docker tag nginx \
  us-central1-docker.pkg.dev \
  /artifact-registry-dyson \
  /quickstart-docker-repo \
  /nginx-image:tag1
  • artifact-registry-dyson: GCP Project ID,這是您可以自行建立的專案名稱
  • us-central1: 為 repository host 所在位置,
  • docker.pkg.dev: Docker repositories 的 hostname
  • nginx-image: Docker image name

Push Docker Image

最後,並可以將 Docker push 至私有的 registry

docker push us-central1-docker.pkg.dev \
/artifact-registry-dyson \
/quickstart-docker-repo \
/nginx-image:tag1```

***
參考資料:
- [Artifact Registry: the next generation of Container Registry](https://cloud.google.com/blog/products/application-development/understanding-artifact-registry-vs-container-registry)
***

沒有留言:

Deploying Vue & .NET with Google OAuth on GCP Cloud Run

Deploying Vue & .NET with Google OAuth on GCP Cloud Run Deploying Vue & .NET with Google OAuth on GCP Cloud Run...