了解 Azure 容器应用中的容器

已完成

Azure 容器应用为你管理 Kubernetes 和容器业务流程的详细信息。 Azure 容器应用中的容器可以使用你选择的任何运行时、编程语言或开发堆栈。

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

Azure 容器应用支持任何基于 Linux 的 x86-64 (linux/amd64) 容器映像。 无需基本容器映像,如果容器崩溃,它会自动重启。

配置

以下代码是容器应用资源模板的 properties.template 部分中的 containers 数组的一个示例。 摘录显示了在使用 Azure 资源管理器 (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

多个容器

可以在单个容器应用中定义多个容器,以实现挎斗模式。 容器应用中的容器共享硬盘和网络资源,并且这些容器具有相同的应用程序生命周期。

挎斗容器的示例包括:

  • 一个代理,可从共享卷上的主应用容器读取日志并将其转发到日志记录服务。
  • 一个后台进程,用于刷新共享卷中的主应用容器使用的缓存。

注意

在单个容器应用中运行多个容器是一个高级用例。 在大多数情况下,你想要运行多个容器(例如在实现微服务体系结构时这样做),请将每个服务部署为单独的容器应用。

若要在容器应用中运行多个容器,请在容器应用模板的容器数组中添加多个容器。

容器注册表

通过在容器应用配置中提供凭据,你可以部署托管在专用注册表上的映像。

若要使用容器注册表,请在容器应用资源模板的 properties.configuration 部分的注册表数组中定义必需的字段。 passwordSecretRef 字段标识已定义密码的机密数组名称中的机密名称。

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

添加注册表信息后,在部署你的应用时,可以使用所保存的凭据从专用注册表中拉取容器映像。

限制

Azure 容器应用具有以下限制:

  • 特权容器:Azure 容器应用无法运行特权容器。 如果程序尝试运行一个需要根访问权限的进程,则容器中的应用程序会遇到运行时错误。
  • 操作系统:需要基于 Linux (linux/amd64) 的容器映像。