您可以將映像從 Docker 推送至登錄 (如 Docker Hub 或 Harbor) 上的現有專案。

必要條件

需要可推送至登錄的本機映像。下列命令會從 Docker Hub 中提取 hello-world 映像。需要一個帳戶來提取映像。
docker run hello-world
預期的結果:
Hello from Docker!
This message shows that your installation appears to be working correctly.
使用 docker images 命令驗證映像。
docker images
REPOSITORY     TAG                 IMAGE ID            CREATED             SIZE
hello-world    latest              bf756fb1ae65        10 months ago       13.3kB

程序

  1. 使用 vSphere Docker 認證協助程式登入Harbor 登錄
    docker-credential-vsphere login <container-registry-IP> --user username@domain.com
    備註: 雖然可接受 --user username 進行登入,但是應使用 UserPrincipalName (UPN) 語法 ( --user username@domain.com) 來登入並使用 docker push 命令。
  2. Harbor 登錄 中將您要推送到專案的映像,以與要使用它所在命名空間相同的名稱標記:
    docker tag <image-name>[:TAG] <container-registry-IP>/<project-name>/<image-name>[:TAG]
    
    例如:
    docker tag hello-world:latest 10.179.145.77/tkgs-cluster-ns/hello-world:latest
    
    docker images
    REPOSITORY                                    TAG                 IMAGE ID            CREATED             SIZE
    10.179.145.77/tkg-cluster-ns/hello-world     latest              bf756fb1ae65        10 months ago       13.3kB
    hello-world                                   latest              bf756fb1ae65        10 months ago       13.3kB
    
  3. 若要將映像推送到 Harbor 中的專案,請執行下列命令:
    語法:
    docker push <container-registry-IP>/<namespace-name>/<image_name>
    例如:
    docker push 10.179.145.77/tkg-cluster-ns/hello-world:latest
    
    預期結果。
    The push refers to repository [10.179.145.77/tkg-cluster-ns/hello-world]
    9c27e219663c: Pushed
    latest: digest: sha256:90659bf80b44ce6be8234e6ff90a1ac34acbeb826903b02cfa0da11c82cbc042 size: 525
    
  4. 確認映像目前在內嵌式 Harbor 登錄中是否可用。
    • 登入 Harbor 登錄。
    • 專案 > 專案名稱中,按一下專案連結。
    • 選取存放庫索引標籤。
    • 您應該會看到推送至登錄的映像已存在,格式為 namespace/image-name,例如 tkg-cluster-ns/hello-world
    • 選取此映像,您會看到 latest 標籤和其他中繼資料。
  5. 導覽回存放庫索引標籤。
  6. 選取推送映像 Docker 命令下拉式功能表。會向您提供用於標記和推送映像至此存放庫的命令。

範例

以下是將另一個映像推送至 Harbor 登錄的範例:
docker tag busybox:latest <container-registry-IP>/<namespace-name>/busybox:latest
docker push <container-registry-IP>/busybox/busybox:latest