gpt4 book ai didi

docker - 从 Docker 容器迁移到 Cloud Foundry 容器

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

最近开始练习Dockers。基本上,我在 Docker 容器上运行 C 应用程序。现在,我想尝试 cloud foundry,因此,试图了解两者之间的区别。

我会将应用程序描述为新手,因为我是新手。我作为服务启动的应用程序(来自/etc/init.d),它在启动期间读取一个配置文件,该文件指定要加载的所有模块和其他服务的 IP 以及它自己的(0.0.0.1)。 0.0 不起作用,所以我必须提供实际 IP)。

我必须在容器启动时手动更新配置文件中的 IP 和一些详细信息。因此,我编写了一个启动脚本,它在容器启动时执行所有更改,然后是服务启动命令。

现在,转到 Cloud Foundry,我找不到的第一件事是“如何部署 C 应用程序”,然后我找到了 C 构建包和二进制构建包选项。我仍然必须尝试这些,但我无法理解如何为 Cloud Foundry 容器提供启动脚本,或者简单地说如何实现我使用 Dockers 所做的事情。

我的最后一个选择是在 Cloud foundry 中使用 docker 容器,但我想了解我是否可以实现上述目标。

我希望我已经足够清楚地解释我的疑问。

感谢帮助。

最佳答案

一个老问题,但自发布以来发生了很多变化:

Recently I started to practice Dockers. Basically, I am running a C application on Docker container. Now, I want to try cloud foundry, therefore, trying to understand the difference between the two.

...

The last option I have is to use docker containers in Cloud foundry, but I want to understand if I can achieve what I described above.

在 CF 上使用 Docker 容器没有错。如果您已经将所有设置都设置为在 Docker 容器内运行,那么能够在 CF 上运行它为您提供了另一个可以轻松部署工作负载的地方。

虽然这些都是次要的,但对您的 Docker 容器有一些要求,因此值得检查这些以确保它可以在 CF 上运行。

https://docs.cloudfoundry.org/devguide/deploy-apps/push-docker.html#requirements

Anyways, I am not working on this now as CF is not suitable for the project. It's an SIP application and CF only accepts HTTP/S requests.

好的,房间里的大象。这不再是真的。 CF 支持 TCP 路由。这些允许您直接接收 TCP 流量到您的应用程序。这意味着,不再只有 HTTP/S 应用适合在 CF 上运行。

使用 TCP 路由设置 CF 环境的说明:https://docs.cloudfoundry.org/adminguide/enabling-tcp-routing.html

作为开发人员使用 TCP 路由的说明:https://docs.cloudfoundry.org/devguide/deploy-apps/routes-domains.html#create-route-with-port

Now, moving on to Cloud Foundry, the first thing I was not able to find is 'How to deploy C application' then I found a C build pack and a binary build pack option.

选择构建包是重要的一步。 buildpack 获取您的应用程序并准备好在 CF 上运行。 C 构建包可能听起来不错,因为它会获取您的源代码、构建并运行它,但它会变得棘手,因为您的 C 应用程序可能依赖于库。可能会或可能不会安装的库。

如果您要走这条路,您可能需要使用 CF 的多构建包支持。这使您可以运行多个构建包。如果将其与 Apt buildpack 配对,您可以安装所需的包,以便在编译时为您的应用程序提供任何所需的库。

https://docs.cloudfoundry.org/buildpacks/use-multiple-buildpacks.html

https://github.com/cloudfoundry/apt-buildpack

使用二进制构建包是另一种选择。在这种情况下,您将在本地构建您的应用程序。也许在 docker 容器或 Ubuntu VM 上(它需要匹配您的 CF 提供商使用的堆栈,即 cf stacks,目前是 Ubuntu Trusty 或 Ubuntu Bionic)。一旦您拥有二进制或二进制 + 库集,您可以简单地 cf push 编译的工件。二进制 buildpack 将“运行”(它实际上什么都不做),然后您的应用程序将使用您指定的命令启动。

我只有 0.02 美元,但二进制 buildpack 可能是两个选项中更简单的一个。

what I am not able to understand how I can provide a startup script to a cloud foundry container or in brief how to achieve what I was doing with Dockers.

有几种方法可以做到这一点。第一种是指定自定义启动命令。您可以使用 cf push -c 'command' 执行此操作。这通常用于启动您的应用程序,如 './my-app',但您也可以使用它来做其他事情。

例如:cf push -c './prep-my-app.sh && ./my-app'

或者甚至只是调用您的启动脚本:

例如:cf push -c './start-my-app.sh'

CF 还支持 .profile 脚本。这可以与您的应用程序一起推送(在您推送的文件的根目录下),它将在您的应用程序启动之前由平台执行。

https://docs.cloudfoundry.org/devguide/deploy-apps/deploy-app.html#profile

通常,您希望使用 .profile 脚本,因为您想让 buildpack 决定如何启动您的应用程序(设置 -c 将覆盖buildpack),但在您使用 C 或二进制 buildpack 的情况下,buildpack 不太可能做到这一点,因此无论如何您最终都必须设置自定义启动命令。

对于这种特定情况,我建议使用 cf push -c,因为它稍微容易一些,但对于所有其他情况和使用其他 buildpack 部署的应用程序,我建议使用 。配置文件脚本。

希望对您有所帮助!

关于docker - 从 Docker 容器迁移到 Cloud Foundry 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33406410/

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