如何在已启动的虚拟机上通过云函数执行 "docker run"?

How can I execute "docker run" via a Cloud Function on a VM which has been started?

在 VM 中,我有一个容器,其中包含一个简单的 Python 脚本,我想通过 Cloud Function 运行。我了解如何 start/stop 虚拟机,但我不知道如何通过 Cloud Function 运行 脚本。是否可以通过云功能执行此操作?

详情如下:

这是启动 VM 的 GCP Cloud Function,代码使用 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)。

在 VM 中,我可以像往常一样使用 docker 容器,例如docker run -it container-name python3 myscript.py。 (为了这个问题的目的,它就像 运行 在 python 中打印“hello world”的脚本,如 link 中所述)

我怎样才能简单地执行类似 docker run -it my-container python3 my-script.py 的操作?

是否可以设置docker run实例启动时执行?

要在 VM 启动时执行某些操作,您可以使用 startup scripts。但是,不要使用带有 -it 的命令,它用于交互模式;只需在启动脚本中执行 docker 运行。

紧接着,您可以编写代码在 docker 运行 命令结束时自动停止 VM。