雖然透過 Dockerfile 可以快速又方便的產生出新的 image,但是在某些特殊環境,常常還是會失敗 (比如拉不到某些套件的 respostory 之類的)。即使拉的到,卻還是要花很長的時間重新 build。那是否能把 build 好的檔案存起來,需要的時候拉下來直接用呢?
Google 的 container registry 就是一個方便的選擇。
步驟
1.
2.
下載 Google Cloud SDK
到這個網頁,https://cloud.google.com/sdk/docs/ ,挑選你的作業系統,並安裝 Google Cloud SDK
如果是 CentOS 可以用下列語法快速安裝
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 -y install google-cloud-sdk
3.
設定權限/授權
在 console 下執行
gcloud auth configure-docker
會出現下列訊息
The following settings will be added to your Docker config file located at [/root/.docker/config.json]: { "credHelpers": { "gcr.io": "gcloud", "us.gcr.io": "gcloud", "eu.gcr.io": "gcloud", "asia.gcr.io": "gcloud", "staging-k8s.gcr.io": "gcloud", "marketplace.gcr.io": "gcloud" } } Do you want to continue (Y/n)? y Docker configuration file updated.
4.
產生憑證 Key (json)
記得選取 [服務帳戶金鑰]
並且產生 json 檔案 (要保存好)
5.
設定權限環境變數
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/[FILE_NAME].json"
把上一個步驟的 json 檔案設定到環境變數後,這樣就會簡單一點,能夠直接完成認證
6.
標記 docker
把已經 build 好的 docker 指定 tag
docker tag your-image gcr.io/[PROJECT-ID]/your-image:tag1
上傳 docker image
docker push gcr.io/[PROJECT-ID]/your-image:tag1
7.
下載 docker image
接下來就是使用端了,只要把 image 拉下來,就可以不需要 build 直接使用囉!~
如果該機器還沒有做過認證的話,可以簡單地輸入
gcloud auth login
完成 offline 的授權即可
docker pull gcr.io/[PROJECT-ID]/your-image:tag1
註:
Prev
備份用 Docker 裝的 gitlab
Next Docker 相關指令速記