【发布时间】:2021-11-27 20:20:51
【问题描述】:
我有一个小问题。因此,我构建了需要在 Google Cloud 上运行的 docker 映像,而我的问题是运行它们需要两个卷绑定标志。而且我似乎无法弄清楚它们是如何在 Google Cloud 控制台中的 Cloud Run 中作为容器参数传递的。如果我要在本地运行 docker 映像,这是命令:
docker run -v /var/run/docker.sock:/var/run/docker.sock -v /tmp:/tmp --gpus all -it --rm --name ner -p 5000:5000 electra_mlflow
对不起,这条线很长,但唯一重要的是两个卷绑定参数。我已经阅读了 Google Cloud 的文档,但我无法弄清楚。然后我遇到了这个博客,上面说 Google Cloud 不允许卷,但提出了使用 Secret Manager 的解决方法。 https://medium.com/google-cloud/mount-a-file-as-a-volume-in-cloud-run-facc74c02cc6
然而,我离如何在我的应用程序中使用此解决方法还差得很远,特别是:我会在秘密中保存什么字符串才能使其工作?另外,据我了解,还有一个文件解决方法的大小限制,这是一个问题,但对我来说是可以解决的。
【问题讨论】:
-
我的评论是对@DazWilin 的好回答的称赞。 Cloud Run 不在 Docker 下运行,并且大多数 Docker 样式选项不可用。如果您需要卷挂载(持久存储),我建议使用 Compute Engine 和本地持久存储。 Cloud Run 被设计成一个无状态的 HTTP 请求/响应系统,没有后台线程或任务。由于您需要存储状态,请使用提供该功能的服务。否则,您将破解精心设计的服务来满足您的需求,同时带来相关的麻烦和降低的服务可靠性。
-
为什么需要挂载 /tmp 和 docker.sock 卷?你的容器有什么要求? /tmp 是无用的,因为它是无状态环境,您将无法保留 /tmp 数据,它是短暂的。 docker.sock 是 Cloud Run 上不会考虑的 docker 配置(因为在运行时不使用 Docker)。那么,为什么会有这些要求?
标签: docker google-cloud-platform