了解 Azure 容器应用中的容器

已完成

Azure 容器应用为您管理 Kubernetes 和容器编排的细节。 Azure 容器应用中的容器可以使用所选的任何运行时、编程语言或开发堆栈。

关系图显示了 Azure 容器应用的容器如何一同分组到修订快照内的 Pod 中。

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

配置

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