我想简单地通过 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}}')