0

容器即服务 (caas) 是我们在我们周围听到的嗡嗡声。但是我在互联网上没有找到关于这个模型的一些混淆。

实际上,我们为客户提供的服务包括敏感数据(财务文件等)。因此,我们的一些客户不愿与我们分享数据。

因此,他们需要 docker 容器形式的解决方案。因此,在这种情况下,所有数据和我们的应用程序都将托管在它们自己的服务器中。我们将无权访问他们的数据。我们将按月向他们收费。

简而言之,我们需要将docker 容器中的所有应用程序(源代码和数据库)作为 blackbox交付。因此,客户端只能通过网络与 docker 容器交互,但无法进入 docker 容器查看我们的源代码和数据库结构。

这就是为什么我很困惑我们如何保护我们的源代码和数据库结构。(源代码是PHP,DB是PGSQL)

其次,我们如何将 docker 容器的代码与更新的代码同步?

对此问题的任何帮助将不胜感激。

4

1 回答 1

1

我们如何保护我们的源代码

使用一种不易被反编译的编译语言(C++、Go)。如果您使用在容器中包含源代码的解释性语言(Javascript、Python、Ruby),一旦客户端拥有图像的副本,他们就可以轻松运行它或以其他方式打开它并查看您的源代码。

和数据库结构

除了保护数据库和应用程序代码之外,没有特定的方法可以做到这一点。任何可以连接到数据库的人都可以很容易地查询架构。

我们如何将 Docker 容器的代码与更新的代码同步?

向客户端发送一个新图像,让他们删除现有容器并创建一个新容器。

这很重要,并且需要一些前期设计。当您这样做时,容器本地文件系统中的任何内容都将丢失,这意味着您永远不会在容器的本地文件系统中存储任何您无法轻易重新创建的内容。您已经有一个数据库,因此请计划将大部分实际数据保留在那里。如果您生成日志,要么在进程的标准输出上生成它们(以便核心 Docker 日志系统可以收集它们),要么使用主机绑定挂载目录将它们放在可以轻松查看的位置。

这也是 Kubernetes 等集群管理器使用的机制。你可以告诉 Kubernetes 部署控制器你想要一个镜像 me/abc:123 的 3 个副本。如果您随后告诉它您想要 me/abc:246 的 3 个副本,它将使用新图像启动新容器,然后删除旧容器。

与此相反的是,您根本不需要考虑“同步代码”或以其他方式登录到容器,并且docker ps应该能够立即告诉您客户端正在运行的系统版本(通过特定的图像标签)。

于 2019-01-24T12:26:35.170 回答