SSH in neu bereitgestellten Container auf GCP Compute Engine

SSH in neu bereitgestellten Container auf GCP Compute Engine

Ich möchte einfach und ohne großen Aufwand per SSH auf einen auf GCP Compute Engine bereitgestellten Container zugreifen.

Zuerst erstelle ich eine Compute-Instanz mit einem Container:

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

Versuchen Sie dann, sich per SSH anzumelden:

gcloud compute ssh instance_name --container CONTAINER_NAME

Das Problem ist, dass der CONTAINER_NAME unbekannt ist.Es scheint keine Möglichkeit zu geben, den Containernamen festzulegen, wenn Sie die Instanz deterministisch erstellen. Nachdem Sie die Instanz erstellt haben, müssen Sie daher „docker ps“ darauf ausführen, um den zufälligen Namen zu bestimmen, bevor Sie die SSH-Funktionalität nutzen können.

Das scheint ein so standardmäßiges Nutzungsmuster zu sein, dass ich etwas übersehen haben muss. Gibt es einen besseren Weg?

Antwort1

Mir ist keine Möglichkeit bekannt, Container beim Erstellen einer virtuellen Maschineninstanz zu benennen.

Als Lösung könnten Sie einen Befehl ausführen, um die Container-Images aufzulisten. Dieser Befehl würde einmal ausgeführt, um den Image-Namen abzurufen. Fügen Sie ihn in ein Shell-Skript ein.

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

Hinweis: Sie können die CLI so einrichten, dass die Angabe von Projekt und Zone nicht erforderlich ist, um den Befehl zu vereinfachen:

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

Der Befehl kann weiter vereinfacht werden, wenn die Instanz den standardmäßigen privaten SSH-Schlüssel verwendet. Dieser lautet~/.ssh/google_compute_engine.

Dadurch wird der Befehl wie folgt reduziert:

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

Antwort2

Eine einzelne Befehlsversion zum Herstellen einer Verbindung mit dem laufenden Container:

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

verwandte Informationen