通过 SSH 进入 GCP Compute Engine 上新部署的容器

通过 SSH 进入 GCP Compute Engine 上新部署的容器

我想简单地通过 SSH 进入部署在 GCP Compute Engine 上的容器,而无需经历任何麻烦。

首先,我创建一个带有容器的计算实例:

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

然后尝试通过 ssh 进入:

gcloud compute ssh instance_name --container CONTAINER_NAME

问题是 CONTAINER_NAME 未知。似乎无法在创建实例时以确定性的方式设置容器名称。因此,创建实例后,您需要在其上运行“docker ps”来确定随机名称,然后才能使用 SSH 功能。

这似乎是一种标准的使用模式,我肯定遗漏了一些东西。有没有更好的方法?

答案1

我不知道在创建虚拟机实例时命名容器的选项。

解决方案是,您可以运行命令来列出容器镜像。此命令将运行一次以获取镜像名称。将其放入 shell 脚本中。

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

注意:您可以将 CLI 设置为不需要指定项目和区域以简化命令:

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

如果实例使用默认的 SSH 私钥,则该命令可以进一步简化,即〜/.ssh / google_compute_engine

这将命令简化为:

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

答案2

连接到正在运行的容器的单个命令版本:

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

相关内容