【发布时间】:2021-03-02 04:53:39
【问题描述】:
在 VM 中,我有一个容器,其中包含我想通过云函数运行的简单 Python 脚本。我了解如何启动/停止 VM,但我无法弄清楚如何通过 Cloud Function 运行脚本。是否可以通过云功能做到这一点?
详情如下:
这是启动 VM 的 GCP 云函数,代码使用 Python SDK。
from googleapiclient import discovery
service = discovery.build('compute', 'v1')
# Start the VM
# Project ID defined here
project = ''
zone = 'us-central1-a'
# name of the VM
instance = 'my-instance'
request = service.instances().start(project=project, zone=zone, instance=instance)
response = request.execute()
print("success!")
此 VM my-instance 使用 Docker 容器部署(有关详细信息,请参阅 here)。
在虚拟机中,我可以像往常一样使用 docker 容器,例如与docker run -it container-name python3 myscript.py。 (就这个问题而言,这就像在 python 中运行一个打印“hello world”的脚本,正如link 中所解释的那样)
我怎样才能简单地执行docker run -it my-container python3 my-script.py之类的东西?
是否可以设置docker run在实例启动时执行?
【问题讨论】:
-
1) 您的目标可能需要比 Cloud Functions 提供的更多资源/功能。考虑云运行。请注意,我不确定并且我倾向于将 Cloud Run 用于这些类型的任务。 2) 启动 VM 后,您可以使用 SSH 库连接到 VM 并运行 Docker 命令。这在 Python 和大多数其他语言中很容易做到。
-
嗨@JohnHanley,感谢您的帮助。我考虑过 Cloud Run,但我的理解是容器使用的 RAM 是有限制的(我认为是 8GB)。如果可以访问更多 RAM,那么我同意 Cloud Run 适合这项任务。
-
我不确定我是否关注你。 Cloud Run 是 Cloud Functions 的老大哥。而且您不需要 8 GB 的 RAM 来创建 SSH 连接来执行远程命令。
-
我可能会感到困惑;您的意见会有所帮助。对于 Cloud Run,在容器内(例如运行 python 代码),是否有内存限制? cloud.google.com/run/docs/configuring/memory-limits我的理解是8GB。如果这是正确的,那么我需要在具有比这更多资源的 VM 中运行 docker 容器。这有意义吗?
-
纪尧姆贴的答案很好。但是,如果您的新目标是从 Compute Engine 启动脚本运行 Docker,我建议改为使用旨在运行容器的容器优化操作系统。 cloud.google.com/container-optimized-os/docs
标签: docker google-cloud-platform google-cloud-functions google-compute-engine google-cloud-pubsub