使用第三方容器登錄

Azure 開發人員 CLI (azd) 支援用於部署的外部第三方容器登錄。 若要使用這項功能,您必須在呼叫 azd 部署之前,先手動向外部容器登錄進行驗證。

只有在 azd 幫你管理映像作業時,才需要基於 Docker 的認證,例如拉取、建置、標籤或推送映像檔。 若服務配置為 services.<name>.docker.imagePassthrough: trueazd 則可重用已設定的遠端映像 as-is。 在這種情況下, azd 不需要 Docker 或 Podman,也不會執行任何登錄檔認證或映像生命週期步驟。

驗證

執行 docker login 並驗證外部容器登錄。 你可能需要依照你特定的註冊表提供者進行更多設定或配置步驟。

docker login <your-registry>

範例案例

您可以將 設定 azd 為從範本檔案中的 azure.yaml 外部容器登錄推送和提取映像。 支援更多容器登錄檔,為您的部署工作流程提供更大的彈性。

從外部容器登錄檔提取

在此範例中,於 azd 部署期間,容器會從 docker.io/username/nginx:latest 提取,並由容器應用程式服務直接參考。

name: todo-nodejs-mongo-aca
metadata:
  template: todo-nodejs-mongo-aca@0.0.1-beta
services:
  nginx:
    image: docker.io/<username>/nginx:latest
    host: containerapp

注意

若要從私有容器登錄檔提取容器映像,您的 Container App 基礎結構組態必須設定認證資訊。

若要部署遠端映像檔而不需 Docker 或 Podman,請設定 services.<name>.docker.imagePassthrough: true 並提供完整合格的映像檔,包括登錄檔,格式為 services.<name>.image

name: todo-nodejs-mongo-aca
metadata:
  template: todo-nodejs-mongo-aca@0.0.1-beta
services:
  nginx:
    image: docker.io/<username>/nginx:latest
    host: containerapp
    docker:
      imagePassthrough: true

imagePassthrough 具有以下限制條件:

  • 它需要 services.<name>.image 被設定好。
  • 它無法與 docker.remoteBuild合併。
  • 它不支援該服務的 azd publish 映像覆寫旗標、--from-package--to

拉取、標記並推送至外部登錄庫

假設有一個 azure.yaml 檔案,其設定如下:

# azure.yaml

name: todo-nodejs-mongo-aca
metadata:
  template: todo-nodejs-mongo-aca@0.0.1-beta
services:
  nginx:
    image: nginx
    host: containerapp
    docker:
      registry: docker.io/<username>
      image: nginx
      tag: latest   

azd deploy 指令會拉取已配置的 nginx 映像檔。 在這種情況下,它是 docker hub 上的公開映像檔,所以 azd 會重新標籤容器/映像檔並推送到 docker 登錄檔。

在 azd deploy 上建置、標記和推送至外部登錄

請考慮下列組態的 azure.yaml 檔案:

# azure.yaml

name: todo-nodejs-mongo-aca
metadata:
  template: todo-nodejs-mongo-aca@0.0.1-beta
services:
  api:
    project: ./src/api
    host: containerapp
    docker:
      registry: docker.io/<username>
      image: todo-api

這個 azd deploy 指令會建立容器、標記它,然後推送到 docker 登錄檔。