SSH no contêiner recém-implantado no GCP Compute Engine

SSH no contêiner recém-implantado no GCP Compute Engine

Quero simplesmente fazer SSH em um contêiner implantado no GCP Compute Engine sem se preocupar.

Primeiro, crio uma instância de computação com um contêiner:

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

Então tente fazer ssh nele:

gcloud compute ssh instance_name --container CONTAINER_NAME

O problema é que CONTAINER_NAME é desconhecido.Parece que não há como definir o nome do contêiner ao criar a instância de maneira determinística. Portanto, depois de criar a instância, você precisa executar "docker ps" nela para determinar o nome aleatório antes de poder usar a funcionalidade SSH.

Este parece ser um padrão de uso tão padrão que devo estar faltando alguma coisa. Existe uma maneira melhor?

Responder1

Não conheço uma opção para nomear contêineres na criação de instâncias de máquinas virtuais.

Como solução, você poderia executar um comando para listar as imagens do contêiner. Este comando seria executado uma vez para obter o nome da imagem. Coloque-o em um script de shell.

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

Nota: você pode configurar a CLI para não exigir a especificação do projeto e da zona para simplificar o comando:

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

O comando pode ser mais simplificado se a instância estiver usando a chave privada SSH padrão, que é~/.ssh/google_compute_engine.

Isso reduz o comando para:

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

Responder2

Uma única versão de comando para conectar-se ao contêiner em execução:

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

informação relacionada