探索 Azure 容器應用程式中的容器

已完成

Azure 容器應用程式會為您管理 Kubernetes 和容器協調流程的詳細資料。 Azure 容器應用程式中的容器可以使用您選擇的任何執行階段、程式設計語言或開發堆疊。

Diagram showing how containers for an Azure Container App are grouped together in pods inside revision snapshots.

Azure Container Apps 支援任何以 Linux 為基礎的 x86-64 (linux/amd64) 容器映像。 無需基礎容器映像,如果容器損毀,它會自動重新啟動。

組態

下列程式碼是容器應用程式資源範本 properties.template 區段中 containers 陣列的範本。 摘錄顯示使用 Azure Resource Manager (ARM) 範本設定容器時的一些可用組態選項。 對範本 ARM 組態區段的變更會觸發新的容器應用程式修訂。

"containers": [
  {
       "name": "main",
       "image": "[parameters('container_image')]",
    "env": [
      {
        "name": "HTTP_PORT",
        "value": "80"
      },
      {
        "name": "SECRET_VAL",
        "secretRef": "mysecret"
      }
    ],
    "resources": {
      "cpu": 0.5,
      "memory": "1Gi"
    },
    "volumeMounts": [
      {
        "mountPath": "/myfiles",
        "volumeName": "azure-files-volume"
      }
    ]
    "probes":[
        {
            "type":"liveness",
            "httpGet":{
            "path":"/health",
            "port":8080,
            "httpHeaders":[
                {
                    "name":"Custom-Header",
                    "value":"liveness probe"
                }]
            },
            "initialDelaySeconds":7,
            "periodSeconds":3
// file is truncated for brevity

多個容器

您可在單一容器應用程式中定義多個容器,以實作 Sidecar 模式。 容器應用程式中的容器會共用硬碟和網路資源,並體驗相同的應用程式生命週期。

Sidecar 容器的範例包含:

  • 從共用磁碟區上的主要應用程式容器讀取記錄,並將其轉送至記錄服務的代理程式。
  • 重新整理共用磁碟區應用程式容器所使用之快取的背景流程。

注意

在單一容器應用程式中執行多個容器是進階使用案例。 在大部分您想要執行多個容器的情況下,例如實作微服務結構時,請將每個服務部署為個別的容器應用程式。

若要在容器應用程式中執行多個容器,請在容器應用程式範本的容器陣列中新增多個容器。

容器登錄

您可以在容器應用程式組態中提供認證,部署裝載於私人登錄的映像。

若要使用容器登錄,您可以在容器應用程式資源範本的屬性設定區段中定義登錄陣列的必要欄位。 passwordSecretRef 欄位會識別您定義密碼的秘密陣列名稱中秘密的名稱。

{
  ...
  "registries": [{
    "server": "docker.io",
    "username": "my-registry-user-name",
    "passwordSecretRef": "my-password-secret-name"
  }]
}

新增登錄資訊後,儲存的認證可用來在部署應用程式時,從私人登錄提取容器映像。

限制

Azure 容器應用程式有下列限制:

  • 具有特殊權限的容器:Azure 容器應用程式無法執行具有特殊權限的容器。 如果您的程式嘗試執行需要根存取的流程,容器內的應用程式就會發生執行階段錯誤。
  • 作業系統:需要以 Linux 為基礎的 (linux/amd64) 容器映像。