Explorar contêineres nos Aplicativos de Contêiner do Azure

Concluído

Os Aplicativos de Contêiner do Azure gerenciam os detalhes do Kubernetes e orquestração de contêineres para você. Os contêineres nos Aplicativos de Contêiner do Azure podem usar o runtime, a linguagem de programação ou a pilha de desenvolvimento de sua preferência.

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

Os Aplicativos de Contêiner do Azure dão suporte a qualquer imagem de contêiner x86-64 baseada em Linux (linux/amd64). Não há nenhuma imagem de contêiner base necessária e, se um contêiner falhar, ele será reiniciado automaticamente.

Configuração

O código a seguir está um exemplo da matriz containers na seção properties.template de um modelo de recurso de aplicativo de contêiner. O trecho mostra algumas das opções de configuração disponíveis ao configurar um contêiner ao usar modelos do ARM (Azure Resource Manager). As alterações na seção de configuração do modelo do ARM disparam uma nova revisão do aplicativo de contêiner.

"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

Vários contêineres

Você pode definir vários contêineres em um único aplicativo de contêiner para implementar o padrão sidecar. Os contêineres em um aplicativo de contêiner compartilham disco rígido e recursos de rede e têm o mesmo ciclo de vida do aplicativo.

Exemplos de contêineres sidecar incluem:

  • Um agente que lê os logs do contêiner do aplicativo primário em um volume compartilhado e os encaminha para um serviço registrar em log.
  • Um processo em segundo plano que atualiza um cache usado pelo contêiner de aplicativo primário em um volume compartilhado.

Observação

A execução de vários contêineres em um único aplicativo de contêiner é um caso de uso avançado. Na maioria das situações em que você deseja executar vários contêineres, como ao implementar uma arquitetura de microsserviço, implante cada serviço como um aplicativo de contêiner separado.

Para executar vários contêineres em um aplicativo de contêiner, adicione mais de um contêiner na matriz de contêineres do modelo de aplicativo de contêiner.

Registros de contêiner

Você pode implantar imagens hospedadas em registros privados fornecendo as credenciais na configuração de Aplicativos de Contêiner.

Para usar um registro de contêiner, defina os campos necessários na matriz de registros na seção properties.configuration do modelo de recurso do aplicativo de contêiner. O campo passwordSecretRef identifica o nome do segredo no nome da matriz de segredos em que você definiu a senha.

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

Com a adição de informações do registro, as credenciais salvas podem ser usadas para extrair uma imagem de contêiner do registro privado quando o aplicativo é implantado.

Limitações

Os Aplicativos de Contêiner do Azure têm as seguintes limitações:

  • Contêineres com privilégios: os Aplicativos de Contêiner do Azure não podem executar contêineres com privilégios. Se o programa tentar executar um processo que requer acesso raiz, o aplicativo dentro do contêiner apresentará um erro de runtime.
  • Sistema operacional: são necessárias imagens de contêiner baseadas em Linux (linux/amd64).