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 es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API 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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
Ir a la página Crear una plantilla de instancias
En la sección Contenedor, selecciona la casilla de verificación Implementar una imagen de contenedor para esta instancia de VM y expande las Opciones avanzadas de contenedor.
- En Google Cloud CLI, usa el comando
gcloud compute instance-templates create-with-container
como se muestra en los siguientes ejemplos. 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.
always
(predeterminada)on-failure
never
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.
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.
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.
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.
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.
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.
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.
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.
- El disco debe tener un sistema de archivos
ext4
o no tener un sistema de archivos. Si no hay un sistema de archivos inicial, el agente de inicio del contenedor formatea el disco aext4
y 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.
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.
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-server
se 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 debes 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
tcp
oudp
. Estas reglas regirán de forma efectiva el acceso desde fuera de la VM a los puertos de contenedor correspondientes.- Obtén información sobre cómo implementar contenedores de Docker en Compute Engine.
- Obtén información sobre Container-Optimized OS.
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 opciones para instancias de VM, pero también puedes configurarlas cuando creas una plantilla de instancias. Usa la consola de Google Cloud o Google Cloud CLI para configurar opciones para las instancias de VM en una plantilla de instancias.
Console
gcloud
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.
Console
gcloud
Usa la marca
--container-restart-policy
para especificar una política de reinicio del contenedor: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-container
con la marca--container-restart-policy
para 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.
Console
gcloud
Usa la marca
--container-privileged
para 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-container
con la marca--container-privileged
para actualizar un contenedor en una VM. Usa la marca--no-container-privileged
para desactivar el modo privilegiado.Asigna un búfer para STDIN en el entorno de ejecución del contenedor
Puedes asignar un búfer para
STDIN
en el entorno de ejecución del contenedor a fin de mantener abierta la transmisiónSTDIN
en un contenedor. Si no se configura, las lecturas deSTDIN
en el contenedor siempre generaránEOF
.Además de asignar un pseudo-TTY, es necesario mantener abierta la transmisión
STDIN
a fin de establecer una shell interactiva en el contenedor y para que el contenedor reciba su entrada estándar desde una canalización.Console
gcloud
Usa la marca
--container-stdin
a fin de asignar un búfer paraSTDIN
en 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-container
con la marca--container-stdin
para actualizar un contenedor en una VM. Usa la marca--no-container-stdin
si 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).
Console
gcloud
Usa la marca
--container-tty
para asignar un pseudo-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-container
con la marca--container-tty
para actualizar un contenedor en una VM. Usa la marca--no-container-tty
si no deseas asignar un seudo-TTY.Anula el comando predeterminado para ejecutarlo en el inicio del contenedor
El
ENTRYPOINT
de 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
ENTRYPOINT
de la imagen del contenedor.Console
gcloud
Usa la marca
--container-command
para anular la imagen del contenedorENTRYPOINT
. En el siguiente ejemplo, se ejecuta el comandouptime
en 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-container
con la marca--container-command
a fin de actualizar un comando para un contenedor en una VM.Usa la marca
--clear-container-command
con el comandoupdate-container
para borrar el comando predeterminado del contenedor actualizado.Pasa argumentos al comando ENTRYPOINT del contenedor
Puedes pasar (agregar) argumentos al comando
ENTRYPOINT
del contenedor o anular el comandoCMD
del contenedor predeterminado.Console
gcloud
Usa la marca
--container-arg
para pasar argumentos al comandoENTRYPOINT
de la imagen del contenedor. Usa una marca diferente para cada argumento.En el siguiente ejemplo, se ejecuta el comando
/bin/ash
con 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-container
con las marcas--container-arg
para 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-args
con el comandoupdate-container
para 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 docker
Configure variables de entorno
Puedes establecer variables de entorno en un contenedor. Si
KEY
se repite más de una vez, solo se toma su último valor deKEY
.Console
gcloud
Usa la marca
--container-env
para establecer variables de entorno en un contenedor. En el siguiente ejemplo, se establecen tres variables de entorno:HOME
,MODE
yOWNER
: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-file
para 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.txt
es:# this is a comment HOME=/home MODE=test OWNER=admin
Usa el comando
gcloud compute instances update-container
con la marca--container-env
o--container-env-file
a 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-env
para quitar las variables de entorno cuando actualizas un contenedor en una VM. En el siguiente ejemplo, se quitan las variables de entorno llamadasMODE
yOWNER
: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.
Console
gcloud
Usa la marca
--container-mount-host-path
para activar un directorio de VM host en un contenedor. En el siguiente ejemplo, se activa el directorio de host/tmp
en el contenedor en/logs
en 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=ro
para activar un directorio de host en modo de solo lectura.Usa el comando
gcloud compute instances update-container
con la marca--container-mount-host-path
para actualizar las activaciones del directorio del host en un contenedor. Usa la marca--remove-container-mounts
para 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.
Console
gcloud
Usa la marca
--container-mount-tmpfs
para activar un sistema de archivos vacíotmpfs
en un contenedor. En el siguiente ejemplo, se activa un sistema de archivostmpfs
en el contenedor en/cache
en 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-container
con la marca--container-mount-tmpfs
para actualizar las activacionestmpfs
en un contenedor. Usa la marca--remove-container-mounts
para quitar una activacióntmpfs
con la ruta de activación especificada durante la actualización. En el siguiente ejemplo, se quita la activacióntmpfs
conmount-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
Console
gcloud
Usa el comando
gcloud compute instances create-with-container
o el comandogcloud compute instances update-container
con la marca--container-mount-disk
para activar un disco persistente en un contenedor.En el siguiente ejemplo, se activan dos discos,
my-data-disk
ymy-scratch-disk
, en el contenedor en las rutas de activación/disks/data-disk
y/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
--disk
adjuntamy-data-disk
, la marca--create-disk
crea y adjuntamy-scatch-disk
, y la marca--container-mount-disk
activa los discos adjuntos en el contenedor. Debido a que no se especifica unmode
paramy-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-container
con la marca--container-mount-disk
para activar los discos adjuntos adicionales o modificar activaciones de discos existentes.Usa la marca
--remove-container-mounts
para 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-disk
a 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-mounts
no 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 es compatible con 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 instancia de VM de 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
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.
¿Qué sigue?
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: 2024-12-22 (UTC)
-