同字面意思,GCP的container Registry提供docker私有庫的host服務,
價格為Google Cloud Storage 儲存空間與網路輸出流量費用
。
在專案中啟用Container Registry api
[https://console.cloud.google.com/apis/library]
安裝GCP Command Line tool 並登入帳號
參考: [https://cloud.google.com/sdk/docs/quickstarts?hl=zh-tw]
安裝完後用Command line tool登入GCP帳號
gcloud auth login
修改要存放到GCR的docker映像檔tag
參考:[https://cloud.google.com/container-registry/docs/pushing-and-pulling]
文件中tag的格式為[HOSTNAME]/[PROJECT-ID]/[IMAGE][:TAG|@DIGEST]
PROJECT-ID可由gcloud projects list
查詢
HOSTNAME是GCR的區域名稱有us.gcr.io / eu.gcr.io / asia.gcr.io / gcr.io四個可選
這裡選擇asia.gcr.io,指令像這樣
docker tag 換tag的image名稱 asia.gcr.io/專案-ID/換tag的image名稱:lastest
上傳映像檔
gcloud docker -- push asia.gcr.io/專案-ID/換tag的image名稱:lastest
下載映像檔
gcloud docker -- pull asia.gcr.io/專案-ID/換tag的image名稱:lastest
使用docker pull 、 docker push 取得、上傳images
上文的docker push 或是docker pull都是使用gcloud的指令
直接使用docker 進行pull 或 push 需要把GCP的token放到docker CLI
參考:[https://cloud.google.com/container-registry/docs/advanced-authentication]
在專案中建立一個Service Account
在API和服務的選單
> 選擇憑證
> 建立憑證
>服務帳戶金鑰
金鑰類型選JSON
,並下載檔案
設定 GOOGLE_APPLICATION_CREDENTIALS
參考:[https://cloud.google.com/docs/authentication/getting-started]
Linux :export GOOGLE_APPLICATION_CREDENTIALS="下載的Service Account JSON檔案.json"
Windows:$env:GOOGLE_APPLICATION_CREDENTIALS="下載的json檔.json"
產生 token
gcloud auth application-default print-access-token
在docker中使用token進行GCR認證
docker login -u oauth2accesstoken -p "上文產生的token" https://asia.gcr.io
- 注意HOSTNAME要與push / pull的host name相同
如此便可使用docker 命令 直接 pull / push 映像檔了