gpt4 book ai didi

docker - 如何在 Heroku 上的 Docker 中运行 Docker?

转载 作者:行者123 更新时间:2023-12-01 14:30:21 25 4
gpt4 key购买 nike

为什么?
我正在尝试为在 Heroku 上运行 docker-compose 创建一个通用解决方案。我想通过使用 Heroku Button 部署来制作一键式部署解决方案。这样,用户不需要任何关于 git、Heroku cli 和 docker 的知识。

问题。
Docker 和 docker 守护进程仅在我设置 stack 时可用至container .有一些构建包可以为您提供 docker 和 docker-compose CLI,但如果没有 docker 守护程序,您将无法运行 docker 镜像。所以buildpacks不会工作。
stack设置为 container我可以使用文件heroku.yml (article)。在那里我定义了我的流程。 (它取代了 Procfile 。如果我仍然在我的项目中添加 Procfile 它将什么都不做。)
我也可以定义一个 Dockerfile在那里建立我的 docker 形象。
但是,当我运行 docker 镜像时,会弹出以下错误:

2019-02-28T15:32:48.462101+00:00 app[worker.1]: Couldn't connect to Docker daemon at http+docker://localhost - is it running?
2019-02-28T15:32:48.462119+00:00 app[worker.1]:
2019-02-28T15:32:48.462122+00:00 app[worker.1]: If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

问题在于 Docker 容器内部的 Docker 守护程序没有运行。解决方案是挂载它: docker run -v /var/run/docker.sock:/var/run/docker.sock ...因为你不能使用 Procfile我无法运行该命令。 (见上面 heroku.yml 替换 Procfile 。)如果我使用的是构建包,我可以使用 Procfile但是docker守护进程不会运行.....

我尝试定义一个 VOLUMEDockerfile 内问题仍然存在。此外,heroku 文章说 "Volume mounting is not supported. The filesystem of the dyno is ephemeral."

在 Heroku 上可以运行 docker 镜像。我正在努力的是在 docker 镜像中运行一个 docker。
通过挂载 /var/run/docker.sock 在 docker 镜像中运行 docker 在我的 VPS 上运行良好但这不能(?)在 Heroku 上完成。

最后的话:
我试图让这项工作发挥作用,以便其他人可以轻松部署软件解决方案,即使他们对 git、heroku cli 和 docker 不满意。

最佳答案

不幸的是,您的问题的答案是:还没有。
出于安全原因,Heroku 不向用户提供运行特权容器的能力,因为容器可以访问主机功能。
文档非常清楚您的 limitations ,例如:否 --priviledged容器和没有 root用户,没有 VOLUMES并且磁盘是短暂的。
在为您考虑过使用 DinD 镜像后,我得出的结论是,尝试在 Heroku 容器中运行 Docker 不是正确的选择和设计。
我很确定您要实现的目标与 Heroku 向用户提供的目标很接近。提供一个平台或应用程序,非开发人员只需一个按钮即可推送和部署应用程序,这可能会以各种方式非常有趣。它可以通过使用他们的平台 API 的应用程序来完成。
在这种情况下,Web 应用程序(在 Heroku 上运行)可能(据我所知)无法执行您想要的操作。相反,您需要嵌入桌面应用程序:git、docker 和您的应用程序,用于解析、验证、构建和推送您的应用程序/组件到 Heroku 的容器注册表。
最后,如果您仍然认为您需要 DinD 解决方案,那么使用 VPS 的主要解决方案是目前唯一的解决方案。但请注意,它可能会为您的系统打开安全漏洞,并且在尝试限制这些安全门时,您可能会提供类似于 Heroku 的报价。

关于docker - 如何在 Heroku 上的 Docker 中运行 Docker?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54929712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com