docker - 如何将大型 docker 镜像部署到 Pivotal Cloud Foundry

标签 docker cloud-foundry

我正在尝试将此 docker 镜像推送到我的 PCF 环境:

https://hub.docker.com/r/jupyter/tensorflow-notebook/tags/

提取后的图像为 3.9GB。

当我这样做时:

cf push jupyter-minimal-notebook --docker-image jupyter/minimal-notebook -m 8GB -k 4G

我得到错误:

The app is invalid: disk_quota too much disk requested (requested 4096 MB - must be less than 2048 MB)

默认情况下,应用获取的默认磁盘空间为 1024mb。这是在 default_app_disk_in_mb 参数的 cloud_controller_ng 中设置的。

默认情况下,用户可以请求的最大磁盘量为 2048mb。这是在 maximum_app_disk_in_mb 参数中的 cloud_controller_ng 中设置的。

我相信解决方案是增加 maximum_app_disk_in_mb 的值,但是,经过大量搜索后,我不知道如何设置它。

我在 manifest.yml 中尝试了以下内容:

---
applications: 
- name: jupyter-tensorflow-notebook
  docker: 
    image: jupyter/tensorflow-notebook
  cloud_controller_ng:
    maximum_app_disk_in_mb: 4096
  disk_quota: 4G
  memory: 8G
  instances: 1

这不起作用并返回相同的错误:

The app is invalid: disk_quota too much disk requested (requested 4096 MB - must be less than 2048 MB)

2019 年 9 月 3 日更新:

我没有提供足够的背景信息。我已经使用 AWS Quickstart 在 AWS 上设置了一个 Small Footprint PCF 环境,因此我可以完全控制部署以调整我想要的任何参数。实际上我是平台运营商。所以问题是,鉴于我有权对 maximum_app_disk_in_mb 进行更改,我将如何去做呢?我想更改 maximum_app_disk_in_mb 参数,但不知道如何在不重新部署整个环境的情况下执行此操作。

为了获得在 Quickstart 中使用的 list ,我认为我需要执行以下操作:

bosh -e aws -d [我的部署] list

据我了解,这是完整的 list 。其中有很多可变参数,比如((cloud-controller-internal-api-user-credentials.password))

有没有办法在不重新部署完整 list 的情况下更新 maximum_app_disk_in_mb

如果我必须重新部署完整的 list ,最好的方法是:

bosh -e aws -d [my-deployment] manifest > manifest.yml

然后编辑 manifest.yml 中的 maximum_app_disk_in_mb 参数值并重新部署?如果我这样做,它会获取使用 list 中变量的参数的所有值,例如 ((cloud-controller-internal-api-user-credentials.password))?

当我这样做时:

bosh -e aws 部署

似乎有两个部署,aws-service-broker-xxxxxxxxxxxxxxxxxxcf-xxxxxxxxxxxxxxxxxxxx(为了匿名,我将 id 替换为 x)。前者没有任何正在运行的实例,所以我想我不需要对那个进行任何更改?

最佳答案

首先让我说,作为 Cloud Foundry 的开发人员/最终用户,您无法更改系统级组件 Cloud Controller 中的设置。只有您的接线员可以做到这一点。

如果您可以更改 Cloud Controller 中的设置,那将使 Cloud Controller 和您的平台运营商设置的所有限制失效,因为您可以将它们设置为您想要的最高值。

Cloud Controller 会设置一个默认的磁盘大小,如果你不设置它就会生效,它会设置一个最大磁盘大小,这会限制你在基础上消耗过多的磁盘并影响其他用户。

除了指定大磁盘配额(尝试 cf push -k 99999G)和看着回应。

从您的回复中可以看出,Cloud Controller 会在错误消息中告诉您最大允许值。在您的情况下,它最多允许 2G。

The app is invalid: disk_quota too much disk requested (requested 4096 MB - must be less than 2048 MB)

要获得超过 2G 的磁盘,除了写信给您的平台运营商并要求他们增加此值之外,您无能为力。如果这是您公司的平台,那么这可能是最佳选择。

如果您使用的是公共(public)提供商,那么您最好考虑一下其他提供商。您可以使用多个经过认证的公共(public)提供商。请在此处查看列表 -> https://www.cloudfoundry.org/thefoundry/

希望对您有所帮助!

关于docker - 如何将大型 docker 镜像部署到 Pivotal Cloud Foundry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57740576/

相关文章:

spring - Cloudfoundry Spring MongoDB 示例应用程序部署失败

spring-boot - 来自manifest.yml的PCF任务/调度程序作业内存分配

mysql - 用于 mysql 复制的端口转发(在 docker 内)

node.js - 使用 LoopBack 和 Kerberos 的 Node.js 应用程序性能达到峰值

Azure 容器注册表权限

python - 如何在以golang为基础镜像的docker中安装python3?

docker - 来自守护进程的错误响应 : Get https://registry-1. docker.io/v2/: dial tcp: lookup registry-1. docker.io...i/o timeout

ibm-cloud - 我可以将外部服务 VCAP_SERVICES 注入(inject)到我的应用程序中吗?

postgresql - 创建指向现有实例的 bluemix postgresql 服务

cloud-foundry - 我们如何在Cloud Foundry中利用应用程序缓存?