【发布时间】:2021-12-23 14:50:09
【问题描述】:
我正在使用 golang 使用 Compute Engine API 以编程方式创建和销毁一次性 Compute Engine 实例。
我可以很好地创建一个实例,但我真正遇到的问题是在启动时启动一个容器。
您可以从控制台 UI 执行此操作:
但据我所知,以编程方式执行此操作非常困难,尤其是使用 Container Optimized OS 作为基础映像时。我尝试做一个启动脚本来执行 docker pull us-central1-docker.pkg.dev/project/repo/image:tag 但它失败了,因为您需要先执行 gcloud auth configure-docker us-central1-docker.pkg.dev 才能使其工作,而 COOS 没有 gcloud 也没有包管理器来获取它。
我所有的变通方法看起来都很老套:
- 手动创建具有所需容器的 VM 模板并创建模板实例
- 将容器放入外部注册表,如 docker hub(不可接受)
- 使用 Ubuntu 而不是 COOS 和包管理器,这样我就可以在启动时以编程方式安装 gcloud、docker 和容器
- 使用 COOS 从 dockerhub 拉下包含 gcloud 的映像,然后执行某种 docker-in-docker mount 来拉下它
我是否遗漏了什么,或者在不使用 gcloud 或控制台 UI 的情况下将容器部署到计算引擎实例真的很麻烦?
【问题讨论】:
标签: google-compute-engine google-artifact-registry google-container-optimized-os