有人可以解释一下Cloud Foundry中的暂存吗?我对此有一些高水平的知识。CC通过cc桥向迭戈大脑等发送请求。暂存是否发生在为此目的临时创建的容器内?构建包和应用程序文件是否下载到 containier 以创建 droplet?
为了让Cloud Foundry运行一个包含应用程序的容器,必须创建一个快捷批处理。液滴是焦油.gz文件。有两种方法可以产生液滴。
- Cloud Foundry 之外
- Cloud Foundry内部
要在 Cloud Foundry 之外创建 droplet,请编写一个脚本以按照 cf 约定生成到.tar.gz,然后使用cf push --droplet mydroplet.tgz
将 droplet 直接上传到 cf,然后可以启动它并使用它运行应用程序。这是非常罕见的,你不应该这样做。
要在云铸造厂内创建液滴,您需要在不指定液滴的情况下执行cf push
。这会告诉 cf 您希望它创建液滴。cf 产生液滴的过程称为分期。以下是暂存过程中发生的情况。
- cf 将创建一个容器来运行暂存 cf
- 将确保执行暂存容器的单元虚拟机具有安装在 cf 中的每个构建包的缓存副本
- CF 会将应用程序位下载到暂存容器中
- cf 将从第一个构建包开始执行构建包的
bin/detect
脚本 - 如果
bin/detect
脚本返回 0,则构建包知道如何运行。 如果它返回 1,则跳过构建包,CF 尝试下一个构建包 - 找到匹配的构建包后,构建包将执行并创建快捷批处理
.tar.gz
文件 - CF 将快捷批处理上传到其 blob 存储中
- CF 暂存容器被销毁
- 暂存过程已完成
创建 droplet 并将其存储在 cf blob 存储中后,cf 可以开始启动基于 blob 的容器。我建议您通读有关 bulidpack 的 cf 文档,https://docs.cloudfoundry.org/buildpacks/understand-buildpacks.html
此外,一旦应用程序运行,您就可以执行cf ssh
,通过暂存过程进入由构建包生成的正在运行的容器,并查看文件系统布局。