Grupos de contenedores en Azure Container InstancesContainer groups in Azure Container Instances

El recurso de nivel superior de Azure Container Instances es el grupo de contenedores.The top-level resource in Azure Container Instances is the container group. Este artículo describe qué son los grupos de contenedores y qué tipos de escenarios permiten.This article describes what container groups are and the types of scenarios they enable.

Cómo funciona un grupo de contenedoresHow a container group works

Un grupo de contenedores es una colección de contenedores que se programan en la misma máquina host.A container group is a collection of containers that get scheduled on the same host machine. Los contenedores de un grupo comparten un ciclo de vida, los recursos, la red local y los volúmenes de almacenamiento.The containers in a container group share a lifecycle, resources, local network, and storage volumes. Es similar al concepto de pod en Kubernetes.It's similar in concept to a pod in Kubernetes.

El siguiente diagrama muestra un ejemplo de un grupo de contenedores que incluye varios contenedores:The following diagram shows an example of a container group that includes multiple containers:

Diagrama de grupos de contenedores

Este grupo de contenedores de ejemplo:This example container group:

  • Se programó en una única máquina host.Is scheduled on a single host machine.
  • Se le asigna una etiqueta de nombre DNS.Is assigned a DNS name label.
  • Expone una única dirección IP pública, con un puerto expuesto.Exposes a single public IP address, with one exposed port.
  • Consta de dos contenedores.Consists of two containers. Un contenedor escucha en el puerto 80, mientras el otro escucha en el puerto 5000.One container listens on port 80, while the other listens on port 5000.
  • Incluye dos recursos compartidos de archivos de Azure como montajes de volumen y cada contenedor monta uno de los recursos compartidos de forma local.Includes two Azure file shares as volume mounts, and each container mounts one of the shares locally.

Nota

Los grupos de varios contenedores solo admiten actualmente contenedores Linux.Multi-container groups currently support only Linux containers. Para los contenedores Windows, Azure Container Instances solo admite la implementación de una única instancia.For Windows containers, Azure Container Instances only supports deployment of a single instance. Aunque estamos trabajando para traer todas las características a los contenedores Windows, puede encontrar las diferencias actuales de la plataforma en Información general.While we are working to bring all features to Windows containers, you can find current platform differences in the service Overview.

ImplementaciónDeployment

Estas son dos formas habituales de implementar un grupo de varios contenedores: use una plantilla de Resource Manager o un archivo YAML.Here are two common ways to deploy a multi-container group: use a Resource Manager template or a YAML file. Se recomienda usar una plantilla de Resource Manager cuando se necesite implementar recursos adicionales de un servicio de Azure (por ejemplo, un recurso compartido de Azure Files) al implementar instancias de contenedor.A Resource Manager template is recommended when you need to deploy additional Azure service resources (for example, an Azure Files share) when you deploy the container instances. Dada la naturaleza más concisa del formato YAML, se recomienda usar un archivo YAML cuando la implementación incluya solo instancias de contenedor.Due to the YAML format's more concise nature, a YAML file is recommended when your deployment includes only container instances.

Para conservar la configuración de un grupo de contenedores, puede exportar la configuración a un archivo YAML mediante el comando de la CLI de Azure az container export.To preserve a container group's configuration, you can export the configuration to a YAML file by using the Azure CLI command az container export. La exportación permite almacenar las configuraciones de grupos de contenedores en el control de versiones para la "configuración como código".Export allows you to store your container group configurations in version control for "configuration as code." O bien, use el archivo exportado como punto de partida al desarrollar una nueva configuración en YAML.Or, use the exported file as a starting point when developing a new configuration in YAML.

Asignación de recursosResource allocation

Azure Container Instances asigna recursos como CPU, memoria y, opcionalmente, GPU (versión preliminar) a un grupo de contenedores mediante la adición de las solicitudes de recursos de las instancias del grupo.Azure Container Instances allocates resources such as CPUs, memory, and optionally GPUs (preview) to a container group by adding the resource requests of the instances in the group. Por ejemplo, cuando se toman recursos de CPU y se crea un grupo de contenedores con dos instancias, y cada una de ellas solicita 1 CPU, se asignan 2 CPU al grupo de contenedores.Taking CPU resources as an example, if you create a container group with two instances, each requesting 1 CPU, then the container group is allocated 2 CPUs.

Los recursos máximos disponibles para un grupo de contenedores varían en función de la región de Azure usada para la implementación.The maximum resources available for a container group depend on the Azure region used for the deployment.

Límites y solicitudes de recursos de contenedorContainer resource requests and limits

  • De manera predeterminada, las instancias de contenedor de un grupo comparten los recursos solicitados del grupo.By default, container instances in a group share the requested resources of the group. En un grupo con dos instancias que solicitan cada una 1 CPU, el grupo como unidad tiene acceso a 2 CPU.In a group with two instances each requesting 1 CPU, the group as whole has access to 2 CPUs. Cada instancia puede usar las 2 CPU y las instancias pueden competir por recursos de CPU mientras se ejecutan.Each instance can use up to the 2 CPUs and the instances may compete for CPU resource while they are running.

  • Para limitar el uso de recursos por una instancia de un grupo, establezca, opcionalmente, un límite de recursos para la instancia.To limit resource usage by an instance in a group, optionally set a resource limit for the instance. En un grupo con dos instancias que solicitan 1 CPU, uno de los contenedores puede requerir un número mayor de CPU para la ejecución que el otro.In a group with two instances requesting 1 CPU, one of your containers might require more CPUs to run than the other.

    En este escenario, puede establecer un límite de recursos de 0,5 CPU para una instancia y un límite de 2 CPU para el segundo.In this scenario, you could set a resource limit of 0.5 CPU for one instance, and a limit of 2 CPUs for the second. Esta configuración limita el uso de recursos del primer contenedor a 0,5 CPU, lo que permite que el segundo contenedor pueda usar las 2 CPU completas, si están disponibles.This configuration limits the first container's resource usage to 0.5 CPU, allowing the second container to use up to the full 2 CPUs if available.

Para obtener más información, consulte la propiedad ResourceRequirements en la API de REST de grupos de contenedores.For more information, see the ResourceRequirements property in the container groups REST API.

Asignación mínima y máximaMinimum and maximum allocation

  • Asigne un mínimo de 1 CPU y 1 GB de memoria a un grupo de contenedores.Allocate a minimum of 1 CPU and 1 GB of memory to a container group. Las instancias de contenedores individuales dentro de un grupo pueden aprovisionarse con menos de 1 CPU y 1 GB de memoria.Individual container instances within a group can be provisioned with less than 1 CPU and 1 GB of memory.

  • Para los recursos máximos de un grupo de contenedores, consulte la disponibilidad de recursos para Azure Container Instances en la región de implementación.For the maximum resources in a container group, see the resource availability for Azure Container Instances in the deployment region.

RedesNetworking

Los grupos de contenedores comparten una dirección IP y un espacio de nombres de puerto en esa dirección IP.Container groups share an IP address and a port namespace on that IP address. Para permitir que los clientes externos lleguen a un contenedor dentro del grupo, debe exponer el puerto en la dirección IP y desde el contenedor.To enable external clients to reach a container within the group, you must expose the port on the IP address and from the container. Dado que los contenedores dentro del grupo comparten un espacio de nombres de puerto, no se admite la asignación de puertos.Because containers within the group share a port namespace, port mapping isn't supported. Los contenedores dentro de un grupo pueden comunicarse entre sí a través de localhost en los puertos que han expuesto, incluso si estos puertos no se exponen externamente en la dirección IP del grupo.Containers within a group can reach each other via localhost on the ports that they have exposed, even if those ports aren't exposed externally on the group's IP address.

Opcionalmente, implemente grupos de contenedores en una red virtual de Azure (versión preliminar) para permitir que los contenedores se comuniquen de forma segura con otros recursos de la red virtual.Optionally deploy container groups into an Azure virtual network (preview) to allow containers to communicate securely with other resources in the virtual network.

StorageStorage

Puede especificar volúmenes externos para montar dentro de un grupo de contenedores.You can specify external volumes to mount within a container group. Puede asignar los volúmenes en rutas de acceso específicas dentro de los contenedores individuales en un grupo.You can map those volumes into specific paths within the individual containers in a group.

Escenarios comunesCommon scenarios

Los grupos de varios contenedores son útiles en casos donde quiera dividir una única tarea funcional en un número pequeño de imágenes de contenedor.Multi-container groups are useful in cases where you want to divide a single functional task into a small number of container images. Luego, estas imágenes las pueden entregar diferentes equipos y pueden tener diversos requisitos de recursos.These images can then be delivered by different teams and have separate resource requirements.

Ejemplos posibles de uso serían:Example usage could include:

  • Un contenedor para servir una aplicación web y un contenedor para extraer el contenido más reciente desde el control de código fuente.A container serving a web application and a container pulling the latest content from source control.
  • Un contenedor de aplicación y un contenedor de registro.An application container and a logging container. El contenedor de registro recopila la salida de registros y métricas de la aplicación principal y los escribe en un almacenamiento a largo plazo.The logging container collects the logs and metrics output by the main application and writes them to long-term storage.
  • Un contenedor de aplicación y un contenedor de supervisión.An application container and a monitoring container. Periódicamente, el contenedor de supervisión realiza una solicitud a la aplicación para asegurarse de que se está ejecutando y responde correctamente, y genera una alerta si no es así.The monitoring container periodically makes a request to the application to ensure that it's running and responding correctly, and raises an alert if it's not.
  • Un contenedor de front-end y un contenedor de back-end.A front-end container and a back-end container. El front-end puede servir una aplicación web y el back-end ejecutar un servicio para recuperar datos.The front end might serve a web application, with the back end running a service to retrieve data.

Pasos siguientesNext steps

Obtenga información acerca de cómo implementar un grupo de múltiples contenedores con una plantilla de Azure Resource Manager:Learn how to deploy a multi-container container group with an Azure Resource Manager template: