【发布时间】:2018-09-19 20:05:06
【问题描述】:
我有多个 docker 容器。在本地,他们使用网络和 compose.yml 相互交谈。我已将容器推送到 PCF,只是我不知道如何让它们相互通信。谁能帮帮我??
【问题讨论】:
标签: docker docker-compose cloud-foundry pcf
我有多个 docker 容器。在本地,他们使用网络和 compose.yml 相互交谈。我已将容器推送到 PCF,只是我不知道如何让它们相互通信。谁能帮帮我??
【问题讨论】:
标签: docker docker-compose cloud-foundry pcf
我的理解是,您将利用 Cloud Foundry 的容器到容器网络来执行此操作。
https://docs.cloudfoundry.org/concepts/understand-cf-networking.html
默认情况下,容器之间不允许连接,但您可以使用cf cli 允许应用程序之间的特定端口上的连接。只需将您的应用程序配置为在您允许的端口上启动和侦听即可。
虽然它不是特定于 docker 的,但这里有一个很好的例子。
https://github.com/cloudfoundry/cf-networking-examples/blob/master/docs/c2c-no-service-discovery.md
使用 docker 应该略有不同。您显然需要创建自己的 docker 镜像,并确保它们将侦听正确的端口,否则这只是对您推送应用程序的方式的调整(即将 docker 镜像名称传递给 cf push)。 cf add-network-policy 命令应该是一样的。
希望有帮助!
** 更新 **
如果您正在寻找类似 @987654327@ 的行为,例如运行一个命令并部署多个应用程序,您可以使用 cf push 和 manifest.yml 文件来实现。
manifest.yml 文件允许您定义多个应用程序。因此,您可以使用它来部署一系列协同工作的应用程序,就像您经常看到的 docker-compose。
https://docs.cloudfoundry.org/devguide/deploy-apps/manifest-attributes.html
manifest.yml 具有相当大的灵活性,您可以部署基于 buildpack 的应用程序或基于 docker 映像的应用程序。您可以配置路由、绑定服务、健康检查、内存/磁盘配额,如果您使用的是足够新的版本,甚至可以配置进程和 Sidecar。也就是说,它不能用 cf cli 完成 100% 的工作,例如,您无法使用 manifest.yml 控制上述网络策略。如果您需要控制未通过 manifest.yml 公开的内容,另一种选择是编写部署脚本。
【讨论】:
docker-compose 是一个完全独立于 Cloud Foundry 的工具。您能详细说明您在此处查找的内容吗?