SSH en un contenedor recién implementado en GCP Compute Engine

SSH en un contenedor recién implementado en GCP Compute Engine

Simplemente quiero utilizar SSH en un contenedor implementado en GCP Compute Engine sin pasar por obstáculos.

Primero, creo una instancia informática con un contenedor:

gcloud compute instances create-with-container instance_name --container-image gcr.io/my-container-path:latest

Luego intenta ingresar a él mediante ssh:

gcloud compute ssh instance_name --container CONTAINER_NAME

El problema es que se desconoce el CONTENEDOR_NOMBRE.Parece que no hay forma de establecer el nombre del contenedor cuando crea la instancia de forma determinista. Entonces, después de crear la instancia, debe ejecutar "docker ps" en ella para determinar el nombre aleatorio antes de poder usar la funcionalidad SSH.

Este parece un patrón de uso tan estándar que me debe faltar algo. ¿Existe una mejor manera?

Respuesta1

No conozco una opción para nombrar contenedores durante la creación de instancias de máquinas virtuales.

Como solución, puede ejecutar un comando para enumerar las imágenes del contenedor. Este comando se ejecutaría una vez para obtener el nombre de la imagen. Ponlo en un script de shell.

gcloud compute ssh $INSTANCE_NAME \
--project $PROJECT_ID \
--zone $ZONE_NAME \
--ssh-key-file $SSH_PRIVATE_KEY \
--command "docker ps"

Nota: puede configurar la CLI para que no requiera especificar el proyecto y la zona para simplificar el comando:

gcloud config set project PROJECT_ID
gcloud config set compute/zone ZONE_NAME

El comando se puede simplificar más si la instancia utiliza la clave privada SSH predeterminada, que es~/.ssh/google_compute_engine.

Eso reduce el comando a:

gcloud compute ssh $INSTANCE_NAME --command "docker ps"

Respuesta2

Una versión de comando única para conectarse al contenedor en ejecución:

gcloud compute ssh my-vm --project=my-project  --container=$(gcloud compute ssh my-vm --project=my-project --command 'sudo docker ps --format {{.ID}}')

información relacionada