在很多情境下,使用者需要用到私人鏡像倉庫中的鏡像進行應用的部署,在這篇文檔中我們使用阿里雲鏡像倉庫服務建立一個私人的鏡像倉庫,並且建立一個使用該私人鏡像倉庫的應用。

步驟一 建立私人鏡像庫

  1. 登入 Container Registry控制台
  2. 在左側導覽列中單擊鏡像倉庫,選擇所需的地區,然後單擊右上方的建立鏡像倉庫


  3. 在彈出的對話方塊中配置鏡像倉庫,設定命名空間、倉庫名稱、摘要和倉庫類型,本例選擇私人鏡像倉庫類型。然後單擊下一步


  4. 在設定代碼源對話方塊中,將代碼源設為本地倉庫。


  5. 在鏡像倉庫列表下,選擇所需的地區和命名空間,您可看到建立完成的鏡像倉庫,單擊右側的管理


  6. 進入倉庫管理介面,單擊基本資料,您可以查看如何使用該私人鏡像倉庫。


  7. 在Linux環境登入鏡像倉庫,將本地的鏡像上傳到私人鏡像倉庫中。
    $ sudo docker login --username=abc@aliyun.com
     Password                                                                                 ## 鏡像倉庫獨立登入密碼:
     Login Succeed
     
    $ docker images                                                                             #以tomcat為例
    REPOSITORY                                                                 TAG                 IMAGE ID            CREATED             SIZE
    tomcat                                                                     latest              2d43521f2b1a        6 days ago          463MB
    
    $ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/kubernetes-java/tomcat-private:[鏡像版本號碼]           
    $ sudo docker push registry.cn-hangzhou.aliyuncs.com/kubernetes-java/tomcat-private:[鏡像版本號碼]                      
     
    The push refers to a repository [registry.cn-hangzhou.aliyuncs.com/kubernetes-java/tomcat-private]
    9072c7b03a1b: Pushed
    f9701cf47c58: Pushed
    365c8156ff79: Pushed
    2de08d97c2ed: Pushed
    6b09c39b2b33: Pushed
    4172ffa172a6: Pushed
    1dccf0da88f3: Pushed
    d2070b14033b: Pushed
    63dcf81c7ca7: Pushed
    ce6466f43b11: Pushed
    719d45669b35: Pushed
    3b10514a95be: Pushed
    V1: digest: sha256:cded14cf64697961078aedfdf870e704a52270188c8194b6f70c778a8289d87e size: 2836
  8. 返回該鏡像倉庫詳情頁,單擊左側導覽列中的鏡像版本,您可以看到鏡像已成功上傳,並可查看鏡像的版本資訊。


步驟二 建立docker-registry類型的secret

當使用kubernetes通過拉取私人鏡像進行應用建立時,那麼需要將私人鏡像庫的身份認證資訊通過docker-registry類型的secret傳入到kubernetes中。

建立docker-registry類型的secret如下所示:

kubectl create secret docker-registry regsecret -n namespace --docker-server=registry-internal.cn-hangzhou.aliyuncs.com --docker-username=abc@aliyun.com --docker-password=xxxxxx --docker-email=abc@aliyun.com

其中:

  • --regsecret: 指定密鑰的鍵名稱,可自行定義。
  • -n:指定namespace,如不指定則預設建立在default命名空間下。
  • --docker-server:指定 Docker 倉庫地址。
  • --docker-username: 指定 Docker 倉庫使用者名。
  • --docker-password:指定 Docker 倉庫登入密碼,即容器鏡像registry獨立登入密碼。
  • --docker-email:指定郵件地址。
说明 在這裡不能用Container Service控制台上的保密字典進行secret的建立。
在yml 檔案加入密鑰參數,才能成功拉取鏡像。
containers:
    - name: foo
      image: registry-internal.cn-hangzhou.aliyuncs.com/abc/test:1.0
imagePullSecrets:
    - name: regsecret

其中:

  • imagePullSecrets 是聲明拉取鏡像時需要指定密鑰。
  • regsecret 必須和上面產生密鑰的鍵名一致。
  • image 中的 Docker 倉庫名稱必須和 --docker-server 中的 Docker 倉庫名一致。

步驟三 通過私人鏡像倉庫建立應用

接下來您可以通過私人鏡像倉庫建立應用了,編排樣本如下:

apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1
kind: Deployment 
metadata: 
  name: private-image
  nameSpace: default  
  labels:  
    app: private-image  
spec:   
  replicas: 1
  selector:
    matchLabels:
      app: private-image
  template:
    metadata:
      labels:
        app: private-image
    spec:
      containers:
      - name: private-image
        image: registry.cn-hangzhou.aliyuncs.com/xxx/tomcat-private:latest
        ports:
        - containerPort: 8080
      imagePullSecrets:
      - name: regsecret

更多內容請參考kubernetes官方文檔使用私人倉庫