Public Repository

Last pushed: 2 years ago
Short Description
在Google Cloud Platform,利用Cloud Storage作為Docker images的私有倉庫儲存空間。
Full Description

說明

在Google Cloud Platform,利用Cloud Storage作為Docker images的私有倉庫儲存空間。

前置條件

1) 已有Google Cloud Platform帳號。

2) 已建立一個專案。(範例中的專案名稱為 Docker

準備Cloud Storage

1) 從左方選單進入 [儲存空間] → [Cloud Storage] → [儲存空間瀏覽器]。

2) 建立一個bucket。(範例中的bucket名稱為 images_repo

準備Compute Engine

1) 從左方選單進入 [運算] → [Compute Engine] → [VM執行個體]。

2) 建立一個VM個體。(範例中VM名稱為 docker ,機器類型選擇弱一點的 g1-small ,開機磁碟為 Ubuntu 14.04

登入VM

1) 可以利用終端機登入VM,也可以透過Google提供的瀏覽器視窗登入。(範例使用瀏覽器視窗)

準備VM環境

1) 新的VM,先更新系統。
$sudo apt-get update && sudo apt-get upgrade -y

2) 安裝Docker engine。
$wget -qO- https://get.docker.com/ | sh

提升VM環境的操作權限

1) 利用gcloud提升權限。
$gcloud auth login

2) 用瀏覽器開啟該網址,取得授權碼後,輸入授權碼。

建立Docker registry

1) 因為是在Google Compute Engine上,所以使用Google版本的registry

2) 寫一個 docker_registry.sh 檔案,內容如下:(範例中的bucket名稱為 images_repo ,如有不同,請修改檔案第2行)

#!/bin/sh
BUCKET=images_repo
TOKEN=$(gcloud auth print-refresh-token)

#run registry
sudo docker pull google/docker-registry
sudo docker run -d \
-e GCS\_BUCKET=$BUCKET \
-e GCP\_OAUTH2\_REFRESH\_TOKEN=$TOKEN \
-p 5000:5000 \
--restart=always \
--name registry \
google/docker-registry

3) 執行 docker_registry.sh
$sudo sh docker_registry.sh

上傳Docker image到私有倉庫(以hello-world為例)

1) 從官方registry下載image。
$sudo docker pull hello-world

2) 重新標記image。
$sudo docker tag hello-world localhost:5000/hello-world

3) 上傳image到私有倉庫。
$sudo docker push localhost:5000/hello-world

從私有倉庫下載Docker image(以hello-world為例)

1) 下載image。
$sudo docker pull localhost:5000/hello-world

補充說明

  • 倉庫的建立、啟動與存取,一定要提升VM環境的操作權限。
  • 利用Cloud Storage作為私有倉庫的儲存空間,能夠讓同一個Google Cloud Platform專案內的任一VM實體,在各自建立Docker registry後,對私有倉庫存取同樣的image資源。
  • 上傳image到私有倉庫,或是從私有倉庫下載image,image的tag一定要有前綴字localhost:5000。
  • 如果要修改port 5000為其他的port,除了localhost:5000要修改以外, docker_registry.sh 第10行的 -p 5000:5000 也要修改成 -p 其他port:5000
Docker Pull Command
Owner
minimum

Comments (0)