Implementa contenedores en las VM y MIG

Puedes configurar una instancia de VM o una plantilla de instancias para implementar y, luego, iniciar un contenedor de Docker. Compute Engine proporciona una imagen actualizada de Container-Optimized OS (COS) con Docker instalado y lanza tu contenedor cuando se inicia la VM. Para obtener más información sobre las ventajas de implementar contenedores en VM, lee Elige implementar contenedores en VM y MIG más adelante en este tema.

Antes de comenzar

Elige implementar contenedores en VM y MIG

Mediante la implementación de contenedores en Compute Engine, puedes simplificar la implementación de apps mientras controlas la infraestructura de VM.

  • Administra las VM en las que se ejecutan contenedores igual que cualquier otra VM cuando configuras y administras la infraestructura de Compute Engine.
  • Crea servicios escalables mediante grupos de instancias administrados (MIG) en los que se ejecutan contenedores. Estos grupos ofrecen funciones como el ajuste de escala automático, la reparación automática, las actualizaciones progresivas, las implementaciones multizona y el balanceo de cargas.
  • Usa herramientas y procesos con los que estés familiarizado, como la herramienta de línea de comandos de gcloud o la API de Compute Engine, a fin de administrar las VM con contenedores.

Como alternativa, puedes considerar implementar en Google Kubernetes Engine, que permite llevar a cabo las siguientes tareas:

  • Ejecutar una gran cantidad de microservicios
  • Reducir el tiempo de inicio de contenedores
  • Aprovechar la organización automatizada de Kubernetes, que incluye actualizaciones automáticas, reparación automática de nodos y ajuste de escala automático

La ejecución de cada microservicio en una máquina virtual (VM) individual en Compute Engine puede causar que la sobrecarga del sistema operativo represente una parte importante del costo. Google Kubernetes Engine te permite implementar varios contenedores y grupos de contenedores para cada instancia de VM, que pueden asignar recursos de VM de host de manera más eficiente a microservicios con una huella más pequeña.

Cómo funciona la implementación de contenedores en Compute Engine

Dentro de los métodos más comunes para implementar software en una instancia de VM de Compute Engine, se incluyen los siguientes:

Ambos métodos combinan las tareas de configuración de la app y de configuración del entorno del sistema operativo. Como desarrollador, debes rastrear y resolver de forma minuciosa cualquier dependencia del entorno de ejecución. Por ejemplo, si dos apps que se ejecutan en una VM usan versiones diferentes de la misma biblioteca, debes instalar ambas versiones y, luego, indicarlas a través de variables del sistema.

Apps que se ejecutan en diferentes versiones de la misma biblioteca.
Una instancia de VM con apps implementadas directamente en el sistema operativo

Como alternativa, puedes implementar software de un contenedor en una instancia de VM o en un grupo de instancias administrado. Un contenedor lleva el software de la app y las bibliotecas requeridas, y está aislado de las bibliotecas y apps del SO. Un contenedor se puede mover con facilidad de un entorno de implementación a otro sin tener que lidiar con las versiones conflictivas de las bibliotecas en el contenedor y su SO.

Apps en contenedores.
Una instancia de VM con apps implementadas en un contenedor

A continuación, se describe el proceso de implementación de un contenedor en Compute Engine:

  1. Se empaquetan la app y las bibliotecas requeridas en una imagen de Docker y esta se publica en Container Registry (también se la puede publicar de forma pública en Docker Hub o en otro registro).
  2. Se especifica un nombre para la imagen de Docker y la configuración docker run cuando se crea una instancia de VM o una plantilla de instancias para un grupo de instancias administrado.

Compute Engine ejecuta las siguientes tareas después de realizar una solicitud para crear una instancia de VM:

  1. Compute Engine crea una instancia de VM mediante el uso de una imagen de Container-Optimized OS que proporciona Google. Esta imagen incluye un entorno de ejecución de Docker y software adicional que está a cargo de iniciar el contenedor.
  2. Compute Engine almacena la configuración del contenedor en los metadatos de la instancia, bajo la clave de metadatos gce-container-declaration.
  3. La imagen de Container-Optimized OS extrae la imagen de contenedor del repositorio y, luego, inicia el contenedor cuando se inicia la VM, mediante la configuración del comando docker run que se almacena en los metadatos de la instancia.
Usa la imagen de contenedor y del comando “docker run”.
Pasos para crear una instancia de VM o un grupo de instancias administrado que ejecute un contenedor

Limitaciones

  • Solo puedes implementar un contenedor para cada instancia de VM. Considera usar Google Kubernetes Engine si necesitas implementar varios contenedores para cada instancia de VM.
  • Solo puedes implementar contenedores desde un repositorio público o desde un repositorio privado en Container Registry. En este momento no se admiten otros repositorios privados.
  • No puedes asignar los puertos de una instancia de VM a los puertos del contenedor (opción de Docker -p).
  • Con este método de implementación, solo puedes usar las imágenes de Container-Optimized OS.
  • Solo puedes usar esta función a través de Google Cloud Console o de la herramienta de línea de comandos de gcloud, no a través de la API.

Prepara un contenedor para la implementación

Elige uno de los siguientes enfoques para que Compute Engine pueda acceder a tu imagen de contenedor:

  • Sube tu imagen de Docker a Container Registry.
  • Usa cualquier imagen de contenedor que esté disponible de forma pública de Docker Hub o de otros registros.

Implementa un contenedor en una instancia de VM nueva

Puedes implementar un contenedor en una instancia de VM nueva mediante Google Cloud Console o con la herramienta de línea de comandos de gcloud.

Console

En el siguiente ejemplo, se implementa un contenedor de https://gcr.io/cloud-marketplace/google/nginx1:latest, una imagen de Nginx de Docker que proporciona Google, en una instancia de VM. Si quieres usar otra imagen de Docker, especifica esa imagen en lugar de la que se menciona en los siguientes ejemplos.

  1. En Google Cloud Console, ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. Haz clic en Crear instancia para crear una instancia.

  3. En la sección Contenedor, selecciona la opción para implementar una imagen de contenedor.

  4. En Imagen de contenedor, especifica un nombre de imagen de contenedor y configura opciones de ejecución del contenedor si lo deseas. Por ejemplo, puedes especificar gcr.io/cloud-marketplace/google/nginx1:latest para la imagen de contenedor.

  5. Haz clic en Crear.

gcloud

Usa el comando gcloud compute instances create-with-container:

gcloud compute instances create-with-container VM_NAME \
  --container-image DOCKER_IMAGE

Por ejemplo, con el siguiente comando, se crea una instancia de VM nueva llamada nginx-vm, que inicia y ejecuta la imagen de Docker gcr.io/cloud-marketplace/google/nginx1:latest.

gcloud compute instances create-with-container nginx-vm \
  --container-image gcr.io/cloud-marketplace/google/nginx1:latest

Obtén más información sobre el comando gcloud compute instances create-with-container.

Siempre que uses una imagen pública de Docker Hub, debes especificar un nombre de imagen de Docker completo. Por ejemplo, especifica el siguiente nombre de imagen para implementar una imagen de contenedor de Apache:

docker.io/httpd:2.4

Actualiza un contenedor en una instancia de VM

Puedes actualizar una imagen de Docker y las opciones de configuración para ejecutar el contenedor en una instancia de VM mediante Google Cloud Console o con la herramienta de línea de comandos de gcloud.

Cuando actualizas una VM que ejecuta un contenedor, Compute Engine lleva a cabo dos pasos:

  • Actualizar la declaración del contenedor en la instancia. Compute Engine almacena la declaración del contenedor actualizada en los metadatos de la instancia en la clave de metadatos gce-container-declaration.
  • Detener y reiniciar la instancia para activar la configuración actualizada, si la instancia se está ejecutando. Si la instancia no está en ejecución, actualiza la declaración del contenedor y mantiene la instancia detenida. La instancia de VM descarga la imagen nueva y, luego, inicia el contenedor cuando se inicia la VM.

Console

  1. En Google Cloud Console, ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. Haz clic en el nombre de la instancia que deseas actualizar.

  3. En la página de detalles de la instancia, haz clic en Editar.

  4. Especifica la nueva imagen de contenedor y actualiza las opciones de ejecución del contenedor según sea necesario.

  5. Haz clic en Guardar y reiniciar para guardar los cambios. Compute Engine guarda los cambios y reinicia la instancia de forma automática para completar la actualización. Una vez que la VM se reinicia, Compute Engine descarga la nueva imagen y, luego, inicia el contenedor con la configuración actualizada.

gcloud

Actualiza la declaración del contenedor con el comando gcloud compute instances update-container. Por ejemplo:

gcloud compute instances update-container nginx-vm \
  --container-image gcr.io/cloud-marketplace/google/nginx1:latest

Con este comando, se configura la imagen del contenedor como gcr.io/cloud-marketplace/google/nginx1:latest y se reinicia la instancia para activar los cambios. También puedes actualizar cualquiera de las propiedades descritas en Configura opciones para ejecutar tu contenedor mediante el uso de las marcas correspondientes.

Una vez que se reinicia la instancia, se descarga la imagen de contenedor nueva y, luego, se inicia el contenedor con la configuración nueva.

Implementa un contenedor en un grupo de instancias administrado

Puedes implementar un contenedor en un grupo de instancias administrado nuevo a través de Google Cloud Console o con la herramienta de línea de comandos de gcloud. Para hacerlo, sigue estos pasos:

  1. Crea una plantilla de instancias que se base en una imagen de Docker.

  2. Crea un grupo de instancias administrado a partir de la nueva plantilla de instancias.

Console

En el siguiente ejemplo, se crea una plantilla de instancias que implementa un contenedor de una imagen Nginx (gcr.io/cloud-marketplace/google/nginx1:15) de Docker que proporciona Google en un grupo de instancias administrado. Para usar otras imágenes de Docker, especifica la imagen deseada en lugar de gcr.io/cloud-marketplace/google/nginx1:15 en el siguiente ejemplo.

  1. En Google Cloud Console, ve a la página Plantillas de instancia.

    Ir a la página Plantillas de instancias

  2. Para crear una plantilla de instancias, haz clic en Crear plantilla de instancias.

  3. En la sección Contenedor, selecciona la opción para implementar una imagen de contenedor.

  4. En Imagen del contenedor, especifica el nombre de la imagen de Docker y configura las opciones de ejecución del contenedor si lo deseas. Por ejemplo, puedes especificar gcr.io/cloud-marketplace/google/nginx1:15 para la imagen de contenedor.

  5. Haz clic en Crear.

A continuación, crea un grupo de instancias administrado que use la nueva plantilla de instancias.

gcloud

Crea una plantilla de instancias para ejecutar imágenes de Docker con el comando gcloud compute instance-templates create-with-container:

gcloud compute instance-templates create-with-container TEMPLATE_NAME \
  --container-image DOCKER_IMAGE

Si quieres, también puedes configurar las opciones de ejecución del contenedor .

Por ejemplo, el siguiente comando crea una plantilla de instancias nueva con el nombre nginx-template, que incluye información sobre la imagen de Docker. Una instancia de VM creada a partir de esta plantilla inicia y ejecuta la imagen de Docker gcr.io/cloud-marketplace/google/nginx1:15 cuando se inicia la VM.

gcloud compute instance-templates create-with-container nginx-template \
  --container-image gcr.io/cloud-marketplace/google/nginx1:15

A continuación, crea un grupo de instancias administrado con la plantilla de instancias nueva.

Ahora que tienes una plantilla de instancias, puedes crear un grupo de instancias administrado que la use. Por ejemplo, para crear un grupo de instancias administrado con la herramienta gcloud y la nginx-template que acabas de crear, ejecuta el siguiente comando:

gcloud compute instance-groups managed create example-group \
  --base-instance-name nginx-vm \
  --size 3 \
  --template nginx-template

Actualiza un grupo de instancias administrado que ejecuta un contenedor

Puedes actualizar un grupo de instancias administrado para implementar una versión nueva de una imagen de Docker o una versión nueva de la imagen de Container-Optimized OS.

Actualiza un grupo de instancias administrado a una versión nueva de una imagen de contenedor

Puedes implementar una versión nueva de una imagen de Docker en un grupo de instancias administrado mediante el Actualizador de grupos de instancias administrados. Para eso, sigue estos tres pasos:

  1. Prepara una imagen de Docker nueva para la implementación.
  2. Crea una plantilla de instancias basada en la nueva imagen de Docker de la misma manera en la que creas una plantilla basada en un contenedor.
  3. Actualiza un grupo de instancias administrado a la plantilla de instancias nueva mediante el Actualizador de grupos de instancias administrados.

Actualiza un grupo de instancias administrado a una versión nueva de la imagen de Container-Optimized OS

Google actualiza las imágenes de Container-Optimized OS con regularidad. Es posible que quieras aplicar esas actualizaciones a tus grupos de instancias administrados en contenedores sin cambiar la imagen de Docker. Puedes actualizar un grupo de instancias administrado según una versión nueva de una imagen de Container-Optimized OS mediante Google Cloud Console o con la herramienta de línea de comandos de gcloud. Para hacerlo, sigue estos dos pasos:

  1. Crea una plantilla de instancias basada en la versión actual de la imagen de Docker, de la misma manera en que creas una plantilla basada en un contenedor para un nuevo grupo de instancias administrado. De forma predeterminada, se usa la última versión compatible de una imagen de Container-Optimized OS.
  2. Actualiza un grupo de instancias administrado con la plantilla de instancias nueva mediante el Actualizador de grupos de instancias administrados.

Conéctate a un contenedor mediante SSH

Puedes conectarte a un contenedor en una VM mediante SSH. Usa la herramienta de gcloud para ejecutar gcloud compute ssh con la marca --container:

gcloud compute ssh VM_NAME --container CONTAINER_NAME

Reemplaza lo siguiente:

  • VM_NAME: el nombre de la instancia de VM
  • CONTAINER_NAME: el nombre del contenedor

Obtén más información sobre el comando gcloud compute ssh y sus argumentos.

Visualiza registros

Puedes ver tres tipos de registros relacionados con contenedores:

  1. Los registros del agente de inicio, también conocidos como registros konlet { class="external" target="github" }. El agente de inicio analiza la configuración del contenedor y ejecuta tareas para iniciar el contenedor en una instancia de VM de Compute Engine.

  2. Los registros de acontecimientos de Docker informan sobre los acontecimientos del contenedor, incluidos los de inicio y detención del contenedor. Estos registros están disponibles para los usuarios de COS 69 o de versiones posteriores.

  3. Los registros del contenedor incluyen el STDOUT de las apps que se ejecutan en el contenedor.

Visualiza los registros del agente de inicio

Los registros del agente de inicio están disponibles en la consola en serie, mediante el servicio del sistema journald que se incluye en la imagen de SO y a través de Cloud Logging.

Visualiza los registros del agente de inicio en la consola en serie

Console

  1. En Google Cloud Console, ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. Selecciona la instancia de VM en la que quieres ver los registros del agente de inicio.

  3. En Registros (Logs), haz clic en Puerto en serie 1 - consola (Serial port 1 - console) para ver los registros de la consola en serie.

    Registros, puerto en serie 1.

gcloud

Usa el comando get-serial-port-output para ver los registros en el puerto en serie de la instancia.

gcloud compute instances get-serial-port-output VM_NAME

Reemplaza VM_NAME con el nombre de la instancia de VM.

Por ejemplo, usa el siguiente comando para ver el resultado del puerto en serie de una instancia de VM llamada nginx-vm:

gcloud compute instances get-serial-port-output nginx-vm

Visualiza los registros del agente de inicio en journald

  1. Conéctate a la instancia con un contenedor mediante SSH.
  2. Ejecuta el comando sudo journalctl para ver el inicio de la VM y los registros de inicio del contenedor. Usa el siguiente comando para filtrar los registros del agente de inicio del contenedor (konlet).

    sudo journalctl -u konlet*
    

Visualiza los registros del agente de inicio en Logging

Console

  1. En Google Cloud Console, ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. Selecciona la instancia de VM de la que deseas ver los registros del agente de inicio.

  3. En Registros (Logs), haz clic en Stackdriver Logging para ver los registros de Cloud Logging.

    Registros, puerto en serie 1.

  4. Ingresa un filtro de búsqueda para recuperar los registros del agente de inicio.

    Si usas COS 68 o una versión anterior, utiliza el siguiente filtro.

    resource.type="global"
    logName="projects/PROJECT_ID/logs/gcplogs-docker-driver"
    jsonPayload.container.imageName:"gcr.io/gce-containers/konlet"
    jsonPayload.instance.name="VM_NAME"
    

    Si usas COS 69 o una versión posterior, utiliza el siguiente filtro.

    resource.type="gce_instance"
    logName="projects/PROJECT_ID/logs/cos_system"
    jsonPayload.SYSLOG_IDENTIFIER="konlet-startup"
    jsonPayload._HOSTNAME="VM_NAME"
    

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID del proyecto que contiene la instancia
    • VM_NAME: el nombre de la instancia de la que deseas obtener los registros

gcloud

Usa el comando gcloud logging read con un filtro apropiado para ver los registros del agente de inicio del contenedor.

Si usas COS 68 o una versión anterior, usa el comando y el filtro siguientes.

gcloud logging read "resource.type=global AND \
  logName=projects/PROJECT_ID/logs/gcplogs-docker-driver AND \
  jsonPayload.instance.name=VM_NAME"

Si usas COS 69 o una versión posterior, usa el comando y el filtro siguientes.

gcloud logging read "resource.type=gce_instance AND \
  logName=projects/PROJECT_ID/logs/cos_system AND \
  jsonPayload.SYSLOG_IDENTIFIER=konlet-startup AND \
  jsonPayload._HOSTNAME=VM_NAME"

Reemplaza lo siguiente:

  • PROJECT_ID: el ID del proyecto que contiene la instancia
  • VM_NAME: el nombre de la instancia de la que deseas obtener los registros

Por ejemplo, usa el siguiente comando a fin de ver los últimos 10 registros del agente de inicio en Logging de una instancia de VM llamada nginx-vm que ejecuta COS 70 y que existe en my-project.

gcloud logging read "resource.type=gce_instance AND \
  logName=projects/my-project/logs/cos_system AND \
  jsonPayload.SYSLOG_IDENTIFIER=konlet-startup AND \
  jsonPayload._HOSTNAME=nginx-vm" \
  --limit 10

Visualiza los registros de eventos de Docker

Con COS 69 o una versión posterior, puedes ver los registros de eventos de Docker en journald y en Cloud Logging.

Visualiza los registros de eventos de Docker en journald

  1. Conéctate a la instancia con un contenedor mediante SSH.
  2. Ejecuta el comando sudo journalctl con el siguiente filtro para ver los registros de acontecimientos de Docker.

    sudo journalctl -u docker-events-collector
    

Visualiza registros de acontecimientos de Docker en Logging

Console

  1. Ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. Selecciona la instancia de VM de la que deseas ver los registros del agente de inicio.

  3. En Registros (Logs), haz clic en Stackdriver Logging para ver los registros de Cloud Logging.

    Registros, puerto en serie 1.

  4. Ingresa el siguiente filtro de búsqueda para obtener los registros de acontecimientos de Docker.

    resource.type="gce_instance"
    logName="projects/PROJECT_ID/logs/cos_system"
    jsonPayload._HOSTNAME="VM_NAME"
    jsonPayload.SYSLOG_IDENTIFIER="docker"
    

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID del proyecto que contiene la instancia
    • VM_NAME: el nombre de la instancia de la que deseas obtener los registros

gcloud

Usa el comando gcloud logging read con un filtro apropiado para ver los registros de acontecimientos de Docker.

gcloud logging read "resource.type=gce_instance AND \
  logName=projects/PROJECT_ID/logs/cos_system AND \
  jsonPayload._HOSTNAME=VM_NAME AND \
  jsonPayload.SYSLOG_IDENTIFIER=docker"

Reemplaza lo siguiente:

  • PROJECT_ID: el ID del proyecto que contiene la instancia
  • VM_NAME: el nombre de la instancia de la que deseas obtener los registros

Por ejemplo, usa el siguiente comando a fin de ver los últimos 10 registros de acontecimientos de Docker en Logging de una instancia de VM llamada nginx-vm que ejecuta COS 70 y que existe en my-project.

gcloud logging read "resource.type=gce_instance AND \
  logName=projects/my-project/logs/cos_system AND \
  jsonPayload._HOSTNAME=nginx-vm AND \
  jsonPayload.SYSLOG_IDENTIFIER=docker" \
  --limit 10

Visualiza registros de contenedores

Console

  1. Ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. Selecciona la instancia de VM de la que deseas ver los registros del agente de inicio.

  3. En Registros (Logs), haz clic en Stackdriver Logging para ver los registros de Cloud Logging.

    Registros, puerto en serie 1.

  4. La página de Cloud Logging se carga con un filtro de búsqueda predeterminado. Si usas COS 69 o una versión posterior, examina el filtro y copia el valor de resource.labels.instance_id. Lo usarás más tarde.

  5. Actualiza el filtro de búsqueda para recuperar los registros del contenedor.

    Si usas COS 68 o una versión anterior, utiliza el siguiente filtro.

    logName="projects/PROJECT_ID/logs/gcplogs-docker-driver"
    jsonPayload.container.name="/VM_NAME"
    

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID del proyecto que contiene la instancia
    • VM_NAME: el nombre de la instancia de la que deseas obtener los registros

    Si usas COS 69 o una versión posterior, utiliza el siguiente filtro:

    resource.type="gce_instance"
    logName="projects/PROJECT_ID/logs/cos_containers"
    resource.labels.instance_id="INSTANCE_ID"
    

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID del proyecto que contiene la instancia
    • INSTANCE_ID: el ID de la instancia de la que deseas obtener los registros

gcloud

Usa el comando gcloud logging read con un filtro apropiado para ver los registros del contenedor.

Si usas COS 68 o una versión anterior, utiliza el comando y el filtro siguientes:

gcloud logging read "logName=projects/PROJECT_ID/logs/gcplogs-docker-driver AND \
  jsonPayload.container.name=/VM_NAME"

Si usas COS 69 o una versión posterior, sigue estos pasos:

  1. Determina el ID de la instancia de la que quieres obtener los registros.

    gcloud compute instances describe VM_NAME \
     --zone ZONE \
     --format="value(id)"
    

    Reemplaza lo siguiente:

    • `<ZONEVM_NAME: the zone where the instance is located
    • `VM_NAMEVM_NAME: the name of the instance that you want to get logs for
  2. Usa el comando y el filtro siguientes para ver los registros del contenedor de la instancia.

    gcloud logging read "resource.type=gce_instance AND \
      logName=projects/PROJECT_ID/logs/cos_containers AND \
      resource.labels.instance_id=INSTANCE_ID"
    

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID del proyecto que contiene la instancia
    • INSTANCE_ID: el ID de la instancia

    Por ejemplo, usa el siguiente comando a fin de ver los últimos 10 registros de contenedor en Cloud Logging para una instancia de VM que se ejecuta en COS 70, que existe en my-project y que tiene un ID de instancia de VM555123456789012345.

    gcloud logging read "resource.type=gce_instance AND \
      logName=projects/my-project/logs/cos_containers AND \
      resource.labels.instance_id=555123456789012345" \
      --limit 10
    

Especifica imágenes optimizadas para contenedores o familias de imágenes

De forma predeterminada, las instancias de VM o las plantillas de instancias en contenedores se crean con el fin de usar la imagen optimizada para contenedores compatible más reciente. La imagen pertenece al proyecto cos-cloud.

Puedes anular esta configuración predeterminada con otra imagen de las familias de imágenes cos-stable, cos-beta o cos-dev (todas en el proyecto cos-cloud).

Estas familias de imágenes incluyen imágenes optimizadas para contenedores pertenecientes a tres canales de versiones diferentes:

  • El canal dev contiene los últimos cambios y se actualiza con frecuencia.
  • El canal beta es una imagen calificada que está en Beta y se actualiza con menos frecuencia.
  • El canal stable ofrece una versión probada y compatible más larga con actualizaciones escasas y críticas (si es necesario).

Por ejemplo, con la herramienta de gcloud, proporciona la marca --image a fin de anular la imagen optimizada para contenedores predeterminada o la marca --image-family si quieres elegir la imagen más reciente de la familia especificada durante la creación de la VM.

En el siguiente ejemplo, se crea una instancia de VM en contenedor que usa la imagen más reciente de la familia de imágenes cos-dev:

gcloud compute instances create-with-container nginx-vm \
  --image-family cos-dev \
  --image-project cos-cloud \
  --container-image gcr.io/cloud-marketplace/google/nginx1:1.15

Configura las reglas de firewall

Las VM en contenedores inician contenedores cuya red está configurada en modo de host. Un contenedor comparte la pila de red del host y todas las interfaces del host están disponibles para el contenedor.

De forma predeterminada, las reglas de firewall de Google Cloud bloquean todas las conexiones entrantes a una instancia de VM y permiten todas las conexiones salientes desde una instancia de VM.

Crea reglas de firewall para permitir conexiones entrantes a tu instancia y, por lo tanto, al contenedor.

Configura las opciones de ejecución de un contenedor

Puedes configurar las siguientes opciones para ejecutar tu contenedor:

  • Especificar una política de reinicio de contenedor
  • Anular el contenedor ENTRYPOINT (comando predeterminado que se ejecutará cuando se inicie el contenedor)
  • Pasar argumentos al comando del contenedor ENTRYPOINT
  • Ejecutar un contenedor en modo privilegiado
  • Activar un directorio de host o tmpfs como volumen de datos dentro del contenedor
  • Configurar variables de entorno
  • Asignar un búfer para STDIN en el entorno de ejecución del contenedor
  • Asignar un seudo TTY

Obtén más información sobre la configuración de opciones para ejecutar tu contenedor.

Próximos pasos