Puedes ejecutar un solo contenedor en una VM o en cada VM de un grupo de instancias administrado (MIG). Para ello, especifica una imagen de contenedor y parámetros de configuración cuando crees una instancia de VM o una plantilla de instancias.
En este documento, se describen las opciones de configuración para ejecutar contenedores en instancias de Compute Engine.
Antes de comenzar
- Si no estás familiarizado con los contenedores, consulta Contenedores en Compute Engine.
- Si no estás familiarizado con Docker, consulta la documentación de Docker.
- Consulta la sección sobre cómo implementar contenedores en Compute Engine.
-
Si aún no lo hiciste, configura la autenticación.
La autenticación verifica tu identidad para acceder a los servicios y las APIs de Google Cloud . Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Instala Google Cloud CLI. Después de la instalación, inicializa Google Cloud CLI ejecutando el siguiente comando:
gcloud initSi usas un proveedor de identidad externo (IdP), primero debes acceder a gcloud CLI con tu identidad federada.
- Set a default region and zone.
Cuando creas una instancia o una plantilla de instancias para usar en la Implementación de contenedores en las VMs y MIG, especifica la configuración del contenedor con la consola de Google Cloud o Google Cloud CLI.
En las siguientes secciones, se describe cómo configurar contenedores en instancias de VM, pero también puedes configurar las siguientes opciones cuando creas una plantilla de instancias. Usa la Google Cloud consola o Google Cloud CLI para configurar opciones para las instancias de VM en una plantilla de instancias.
Puedes usar los comandos de
docker runpara configurar un contenedor en una instancia de VM que ejecute Container-Optimized OS o especificar el comando dedocker runen una secuencia de comandos de inicio para crear y configurar una VM. Para obtener más información, consulta Usa secuencias de comandos de inicio para implementar contenedores en VMs.Especifica una política de reinicio
Puedes establecer una política de reinicio que especifique si un contenedor se debe reiniciar durante la salida. La política predeterminada es reiniciar el contenedor siempre. También puedes configurar la política para reiniciar el contenedor en caso de falla o no reiniciarlo nunca.
docker run
Usa la marca
--restartdel comandodocker run. Los intentos reiterados de reiniciar un contenedor están controlados por el comportamiento predeterminado de Docker, como se especifica en la referencia--restartde Docker.Console
Ir a la página Crear una instancia
En la sección Contenedor, haz clic en Implementar contenedor.
En la página Configurar contenedor, haz lo siguiente:
- Especifica un nombre de imagen de contenedor.
- En la sección Política de reinicio, selecciona la política de reinicio del contenedor.
- Para confirmar los detalles del contenedor, haz clic en Seleccionar.
Continúa con el proceso de creación de VM.
gcloud
Usa la marca
--container-restart-policypara especificar una política de reinicio del contenedor:always(predeterminada)on-failurenever
En el siguiente ejemplo, se inicia un contenedor con la política de reinicio
on-failure, lo que significa que el reinicio solo ocurre cuando el código de salida del contenedor no es cero:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-restart-policy on-failure
Usa el comando
gcloud compute instances update-containercon la marca--container-restart-policypara la política de reinicio en un contenedor que se ejecuta en una VM.Ejecuta un contenedor en modo privilegiado
Puedes ejecutar un contenedor en modo privilegiado para permitir el acceso a todos los dispositivos en el host. Los contenedores se ejecutan como "sin privilegios" de forma predeterminada y no se les permite acceder a ningún dispositivo.
docker run
Usa la marca
--privilegeddel comandodocker run. Para obtener más información, consulta Privilegio del entorno de ejecución y capacidades de Linux.Console
Ir a la página Crear una instancia
En la sección Contenedor, haz clic en Implementar contenedor.
En la página Configurar contenedor, haz lo siguiente:
- Especifica un nombre de imagen de contenedor.
- Selecciona Ejecutar con privilegios.
- Para confirmar los detalles del contenedor, haz clic en Seleccionar.
Continúa con el proceso de creación de VM.
gcloud
Usa la marca
--container-privilegedpara ejecutar un contenedor con privilegio de entorno de ejecución. En el siguiente ejemplo, se inicia un contenedor de busybox en modo privilegiado:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-privileged
Usa el comando
gcloud compute instances update-containercon la marca--container-privilegedpara actualizar un contenedor en una VM. Usa la marca--no-container-privilegedpara desactivar el modo privilegiado.Asigna un búfer para STDIN en el entorno de ejecución del contenedor
Puedes asignar un búfer para
STDINen el entorno de ejecución del contenedor a fin de mantener abierta la transmisiónSTDINen un contenedor. Si no se configura, las lecturas deSTDINen el contenedor siempre generaránEOF.Además de asignar un pseudo-TTY, es necesario mantener abierta la transmisión
STDINa fin de establecer una shell interactiva en el contenedor y para que el contenedor reciba su entrada estándar desde una canalización.docker run
Usa la marca
--interactive(-i) del comandodocker run. Para obtener más información, consulta la documentación de la marca--interactive.Console
Ir a la página Crear una instancia
En la sección Contenedor, haz clic en Implementar contenedor.
En la página Configurar contenedor, haz lo siguiente:
- Especifica un nombre de imagen de contenedor.
- Selecciona Asignar un búfer para STDIN.
- Para confirmar los detalles del contenedor, haz clic en Seleccionar.
Continúa con el proceso de creación de VM.
gcloud
Usa la marca
--container-stdina fin de asignar un búfer paraSTDINen el entorno de ejecución del contenedor. En el siguiente ejemplo, se inicia un contenedor y se mantiene abierto suSTDIN:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-stdin
Usa el comando
gcloud compute instances update-containercon la marca--container-stdinpara actualizar un contenedor en una VM. Usa la marca--no-container-stdinsi deseas desactivar la asignación de un búfer paraSTDIN.Asigna un pseudo-TTY
La asignación de un pseudo-TTY para un contenedor es necesaria a fin de establecer una shell interactiva en el contenedor (junto con la asignación de un búfer para STDIN).
docker run
Usa la marca
--tty (-t)del comandodocker run. Para obtener más información, consulta la marca--tty.Console
Ir a la página Crear una instancia
En la sección Contenedor, haz clic en Implementar contenedor.
En la página Configurar contenedor, haz lo siguiente:
- Especifica un nombre de imagen de contenedor.
- Selecciona Asignar un pseudo TTY.
- Para confirmar los detalles del contenedor, haz clic en Seleccionar.
Continúa con el proceso de creación de VM.
gcloud
Usa la marca
--container-ttypara asignar un seudo-TTY. En el siguiente ejemplo, se inicia un contenedor y se asigna un pseudo-TTY:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-stdin \ --container-tty
Usa el comando
gcloud compute instances update-containercon la marca--container-ttypara actualizar un contenedor en una VM. Usa la marca--no-container-ttysi no deseas asignar un seudo-TTY.Anula el comando predeterminado para ejecutarlo en el inicio del contenedor
El
ENTRYPOINTde una imagen de contenedor especifica qué comando ejecutar cuando se inicia el contenedor y te permite ejecutar el contenedor como si fuera ese binario.Puedes anular el comando
ENTRYPOINTde la imagen del contenedor.docker run
Usa la marca
--entrypoint(solo comando, sin argumentos) del comandodocker run. Obtén información sobreENTRYPOINTy la marca--entrypoint.Console
Ir a la página Crear una instancia
En la sección Contenedor, haz clic en Implementar contenedor.
En la página Configurar contenedor, haz lo siguiente:
- Especifica un nombre de imagen de contenedor.
- En el cuadro Comando, ingresa un solo comando ejecutable sin parámetros, por ejemplo:
uptime. - Para confirmar los detalles del contenedor, haz clic en Seleccionar.
Continúa con el proceso de creación de VM.
gcloud
Usa la marca
--container-commandpara anular la imagen del contenedorENTRYPOINT. En el siguiente ejemplo, se ejecuta el comandouptimeen un contenedor de busybox para mostrar el tiempo transcurrido desde el último inicio:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-command "uptime"
Usa el comando
gcloud compute instances update-containercon la marca--container-commanda fin de actualizar un comando para un contenedor en una VM.Usa la marca
--clear-container-commandcon el comandoupdate-containerpara borrar el comando predeterminado del contenedor actualizado.Pasa argumentos al comando ENTRYPOINT del contenedor
Puedes pasar (agregar) argumentos al comando
ENTRYPOINTdel contenedor o anular el comandoCMDdel contenedor predeterminado.Console
Ir a la página Crear una instancia
En la sección Contenedor, haz clic en Implementar contenedor.
En la página Configurar contenedor, haz lo siguiente:
- Especifica un nombre de imagen de contenedor.
- En la sección Argumentos, haz clic en Agregar argumento.
- Ingresa un argumento de comando para cada casilla.
- Para confirmar los detalles del contenedor, haz clic en Seleccionar.
Continúa con el proceso de creación de VM.
gcloud
Usa la marca
--container-argpara pasar argumentos al comandoENTRYPOINTde la imagen del contenedor. Usa una marca diferente para cada argumento.En el siguiente ejemplo, se ejecuta el comando
/bin/ashcon los argumentos-c 'ls -l'en un contenedor que se configuró para ejecutar busybox de forma automática:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-command "/bin/ash" \ --container-arg="-c" \ --container-arg="ls -l"
Usa el comando
gcloud compute instances update-containercon las marcas--container-argpara actualizar los argumentos del comando de un contenedor que se ejecuta en una VM. La actualización reemplaza toda la lista de argumentos con la lista nueva.Usa la marca
--clear-container-argscon el comandoupdate-containerpara quitar todos los argumentos de la declaración del contenedor.Configura las opciones del controlador de registros
Si necesitas configurar las opciones del controlador de registros, puedes crear una secuencia de comandos de inicio de VM para actualizar tu archivo de configuración de Docker con las opciones de registro que necesitas. Estas opciones se aplican a todos los contenedores que se ejecutan en la VM y que no especifican opciones de controlador de registro.
Por ejemplo, la siguiente secuencia de comandos de inicio configura varias opciones, incluida una opción para limitar el tamaño del registro del contenedor y, luego, reinicia Docker en la VM:
cat <<EOF > /etc/docker/daemon.json { "live-restore": true, "storage-driver": "overlay2", "log-opts": { "max-size": "10m" } } EOF systemctl restart dockerConfigure variables de entorno
Puedes establecer variables de entorno en un contenedor. Si
KEYse repite más de una vez, solo se toma su último valor deKEY.docker run
Usa la marca
--envdel comandodocker run. Obtén información sobre cómo el motor de Docker habilita variables de entorno de configuración.Console
Ir a la página Crear una instancia
En la sección Contenedor, haz clic en Implementar contenedor.
En la página Configurar contenedor, haz lo siguiente:
- Especifica un nombre de imagen de contenedor.
- En la sección Variables de entorno, haz clic en Agregar variable.
- Agrega o quita variables de entorno según sea necesario, una para cada línea.
- Para confirmar los detalles del contenedor, haz clic en Seleccionar.
Continúa con el proceso de creación de VM.
gcloud
Usa la marca
--container-envpara establecer variables de entorno en un contenedor. En el siguiente ejemplo, se establecen tres variables de entorno:HOME,MODEyOWNER:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-env HOME=/home,MODE=test,OWNER=admin
Usa la marca
--container-env-filepara establecer variables de entorno desde un archivo local. En el siguiente ejemplo, se establecen las dos variables de entorno desde el archivoenv.txt:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-env-file ./env.txt
El contenido del archivo
env.txtes:# this is a comment HOME=/home MODE=test OWNER=adminUsa el comando
gcloud compute instances update-containercon la marca--container-envo--container-env-filea fin de actualizar las variables de entorno para un contenedor en una VM. Esto actualiza todas las variables presentes en la declaración del contenedor de la instancia de VM. Las variables que no están en la declaración del contenedor se agregan.Usa la marca
--remove-container-envpara quitar las variables de entorno cuando actualizas un contenedor en una VM. En el siguiente ejemplo, se quitan las variables de entorno llamadasMODEyOWNER:gcloud compute instances update-container busybox-vm \ --remove-container-env MODE,OWNER
Si no hay una variable de entorno especificada, se ignorará en silencio.
Activa un directorio de host como volumen de datos
Puedes activar un directorio de una VM host en un contenedor.
docker run
Usa las marcas
--volumey--mountcon el montajetype=binddel comandodocker run. Obtén más información sobre cómo el motor de Docker activa un directorio de host como un volumen de datos.Console
Ir a la página Crear una instancia
En la sección Contenedor, haz clic en Implementar contenedor.
En la página Configurar contenedor, haz lo siguiente:
- Especifica un nombre de imagen de contenedor.
- En la sección Activaciones de volumen, haz clic en Agregar volumen.
En la lista Tipo de volumen, selecciona Directorio y haz lo siguiente:
- En el campo Ruta de activación, especifica una ruta de activación en una estructura de directorio del contenedor en la que desees activar un directorio de host.
- En el campo Ruta de acceso de host, especifica una ruta de acceso de host al directorio del host que deseas activar.
- En la lista Modo, especifica si deseas activar el directorio en modo de lectura y escritura o de solo lectura.
Para confirmar los detalles del contenedor, haz clic en Seleccionar.
Continúa con el proceso de creación de VM.
gcloud
Usa la marca
--container-mount-host-pathpara activar un directorio de VM host en un contenedor. En el siguiente ejemplo, se activa el directorio de host/tmpen el contenedor en/logsen modo de lectura y escritura:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-mount-host-path mount-path=/logs,host-path=/tmp,mode=rw
Especifica
mode=ropara activar un directorio de host en modo de solo lectura.Usa el comando
gcloud compute instances update-containercon la marca--container-mount-host-pathpara actualizar las activaciones del directorio del host en un contenedor. Usa la marca--remove-container-mountspara quitar activaciones de volumen con las rutas de activación especificadas. En el siguiente ejemplo, se quita una activación de ruta de host conmount-path=/logs:gcloud compute instances update-container busybox-vm \ --remove-container-mounts /logs
Si la ruta de activación especificada no existe, se ignora en silencio.
Activa el sistema de archivos tmpfs como volumen de datos
Puedes activar un sistema de archivos tmpfs vacío en un contenedor.
Un sistema de archivos tmpfs vacío es similar a un volumen
EmptyDirde Google Kubernetes Engine conmedium:Memory. A diferencia de Docker, en el que los datostmpfsse borran cuando el contenedor se reinicia, contmpfsen un contenedor de Compute Engine, el volumen y sus datos persisten cuando se reinicia el contenedor y solo se borran cuando se reinicia la VM.Console
Ir a la página Crear una instancia
En la sección Contenedor, haz clic en Implementar contenedor.
En la página Configurar contenedor, haz lo siguiente:
- Especifica un nombre de imagen de contenedor.
- En la sección Activaciones de volumen, haz clic en Agregar volumen.
- En la lista Tipo de volumen, selecciona TmpFS.
- En el campo Ruta de activación, especifica una ruta de activación en una estructura de directorio de contenedor en la que desees activar un volumen TmpFS.
- En la lista Modo, especifica si deseas activar el volumen TmpFS en modo de lectura y escritura o de solo lectura.
- Para confirmar los detalles del contenedor, haz clic en Seleccionar.
Continúa con el proceso de creación de VM.
gcloud
Usa la marca
--container-mount-tmpfspara activar un sistema de archivos vacíotmpfsen un contenedor. En el siguiente ejemplo, se activa un sistema de archivostmpfsen el contenedor en/cacheen modo de lectura y escritura:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-mount-tmpfs mount-path=/cache
Usa el comando
gcloud compute instances update-containercon la marca--container-mount-tmpfspara actualizar las activacionestmpfsen un contenedor. Usa la marca--remove-container-mountspara quitar una activacióntmpfscon la ruta de activación especificada durante la actualización. En el siguiente ejemplo, se quita la activacióntmpfsconmount-path=/cache:gcloud compute instances update-container busybox-vm \ --remove-container-mounts /cache
Si la ruta de activación especificada no existe, se ignora en silencio.
Activa discos persistentes como volumen de datos
Con Container-Optimized OS 69 o posterior, puedes activar discos persistentes desde una VM host en un contenedor.
Requisitos previos
- El disco debe tener un sistema de archivos
ext4o no tener un sistema de archivos. Si no hay un sistema de archivos inicial, el agente de inicio del contenedor formatea el disco aext4y solo se admiten archivos adjuntos y activaciones de lectura y escritura. - El disco debe estar adjunto a la VM.
Se admiten particiones y dispositivos sin particiones. Para las activaciones de particiones, el disco no puede quedar en blanco; debe contener una tabla de partición existente.
Console
Ir a la página Crear una instancia
En la sección Contenedor, haz clic en Implementar contenedor.
En la página Configurar contenedor, haz lo siguiente:
- Especifica un nombre de imagen de contenedor.
- En la sección Activaciones de volumen, haz clic en Agregar volumen.
- En la lista Tipo de volumen, selecciona Disco.
- En el campo Ruta de activación, especifica una ruta en la estructura de directorios del contenedor en la que deseas activar el disco persistente.
- En la lista Nombre del disco, selecciona un disco existente para activar.
- En el campo Partición, especifica el número de partición que se activará si el disco tiene una tabla de partición. Si el disco no tiene particiones, deja este campo en blanco.
- En la lista Modo, especifica si deseas activar el directorio en modo de lectura y escritura o de solo lectura.
- Para confirmar los detalles del contenedor, haz clic en Seleccionar.
Continúa con el proceso de creación de VM.
gcloud
Usa el comando
gcloud compute instances create-with-containero el comandogcloud compute instances update-containercon la marca--container-mount-diskpara activar un disco persistente en un contenedor.En el siguiente ejemplo, se activan dos discos,
my-data-diskymy-scratch-disk, en el contenedor en las rutas de activación/disks/data-disky/disks/scratch-disk.gcloud compute instances create-with-container busybox-vm \ --disk name=my-data-disk \ --create-disk name=my-scratch-disk,auto-delete=yes,image=ubuntu-1710-artful-v20180315,image-project=ubuntu-os-cloud \ --container-image docker.io/busybox:1.27 \ --container-mount-disk mount-path="/disks/data-disk",name=my-data-disk,mode=ro \ --container-mount-disk mount-path="/disks/scratch-disk",name=my-scratch-disk
Ten en cuenta que la marca
--diskadjuntamy-data-disk, la marca--create-diskcrea y adjuntamy-scatch-disk, y la marca--container-mount-diskactiva los discos adjuntos en el contenedor. Debido a que no se especifica unmodeparamy-scratch-disk, ese disco se activa en el contenedor en modo de lectura y escritura de forma predeterminada.Usa el comando
gcloud compute instances update-containercon la marca--container-mount-diskpara activar los discos adjuntos adicionales o modificar activaciones de discos existentes.Usa la marca
--remove-container-mountspara quitar una activación de volumen de disco con la ruta de activación especificada. En el siguiente ejemplo, se cambia el modo de activación demy-data-diska lectura y escritura y se quita la activación del disco conmount-path="/disks/scratch-disk".gcloud compute instances update-container busybox-vm \ --container-mount-disk mount-path="/disks/data-disk",name=my-data-disk,mode=rw \ --remove-container-mounts "/disks/scratch-disk"
Si la ruta de acceso de activación que pasas a la marca
--remove-container-mountsno existe, se ignorará en silencio.Publica puertos de contenedores
Las VM con contenedores usan el modo de red de host, en el que un contenedor comparte la pila de red del host y todas las interfaces del host están disponibles para el contenedor.
Los puertos de contenedor tienen una asignación de uno a uno a los puertos de VM de host. Por ejemplo, un puerto 80 de contenedor se asigna al puerto 80 de VM de host. Compute Engine no admite la marca de publicación de puertos (
-p), y no tienes que especificarla para que funcione la asignación.Si deseas publicar los puertos de un contenedor, configura las reglas de firewall para habilitar el acceso a los puertos de la VM host. Se podrá acceder a los puertos correspondientes del contenedor de forma automática, según las reglas de firewall.
Ejemplo: publicación del puerto 80 para un contenedor NGINX
docker run
Configura la marca
--network="host"cuando uses el comandodocker run. Obtén más información sobre la configuración de red de los contenedores y el modo de host.gcloud
En el siguiente ejemplo, se muestra cómo crear una instancia de VM con un contenedor NGINX y permitir el tráfico al puerto 80 del contenedor.
Crea una instancia de VM con un contenedor NGINX:
gcloud compute instances create-with-container nginx-vm \ --container-image gcr.io/cloud-marketplace/google/nginx1:1.15 \ --tags http-server
El contenedor comparte la pila de red de la VM de host y el puerto 80 del contenedor se publica en el puerto 80 de la VM de host. La etiqueta
http-serverse usa como una etiqueta de destino para la regla de firewall, creada en el siguiente paso.Crea una regla de firewall para habilitar las conexiones con el puerto 80 de la instancia de VM. La siguiente regla de firewall permite conexiones HTTP a instancias de VM con la etiqueta
http-server.gcloud compute firewall-rules create allow-http \ --allow tcp:80 --target-tags http-server
El contenedor comienza a recibir tráfico de forma automática en el puerto 80. No necesitas realizar ninguna configuración adicional.
Puedes crear reglas de firewall para el protocolo de VM del host: combinaciones de puertos en las que el protocolo es
tcpoudp. Estas reglas regirán de forma efectiva el acceso desde fuera de la VM a los puertos de contenedor correspondientes.
¿Qué sigue?
- Obtén información sobre cómo implementar contenedores de Docker en Compute Engine.
- Obtén información sobre Container-Optimized OS.
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-10-19 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Información o código de muestra incorrectos","incorrectInformationOrSampleCode","thumb-down"],["Faltan la información o los ejemplos que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-10-19 (UTC)"],[],[]] -