2017-06-16 142 views
0

我看着this YouTube video on Docker至22:00扬声器(码头工人,产品经理)说:为什么Docker不支持多租户?

你可能在想‘泊坞窗不支持多租户’......你是对的!

但从来没有任何解释为什么实际给出。所以我想知道:他是什么意思? 为什么Docker不支持多租户?如果你谷歌“Docker多租户”你令人惊讶地得不到任何东西!

回答

3

多租户工具最主要的一个关键特征是每个租户之间的隔离。他们不应该能够看到或管理彼此的容器和/或数据。

docker-ce引擎是一个开箱即用的系统管理员级别的工具。任何可以使用任意选项启动容器的人都可以在主机上进行根访问。有一些第三方工具,如twistlock,它们与authz插件接口连接,但它们只提供粗略的访问控制,每个人都可以被允许或不允许从整个类的活动,如启动容器或查看日志。让用户访问TLS端口或docker socket会导致用户被集中到一个类别中,但连接到docker引擎的用户没有组或名称空间的概念。

对于多租户,docker需要添加一种方式来定义用户,并将其放置在只允许对特定容器和卷进行操作的命名空间中,并限制允许像容器一样更改容器的选项功能或从主机安装任意文件系统。 Docker的企业产品UCP开始通过在对象上使用标签来添加这些功能,但我没有时间来评估这是否会提供完整的多租户解决方案。

2

其他人可能知道如何回答比我好。但是在这里。

让我们多租户source)的定义是:

多租户是在软件应用程序的单个实例为多个客户的架构。

在这个定义中放置Docker确实很困难。可以说它既是实例又是应用程序。这就是混淆来自何处。

让我们打破码头工人分成三个不同的部分:守护,则容器应用

守护进程安装在主机上并运行Docker 容器。守护进程实际上支持多租户,因为它可以在同一个系统上用于我的许多用户,每个用户都有自己的配置~/.docker

Docker 集装箱运行一个单独的进程,我们将其称为应用程序

应用程序可以是任何东西。在这个例子中,我们假设Docker 容器运行一个Web应用程序,如论坛或其他东西。论坛允许用户使用他们的名字登录和发布。这是一个单个实例,它服务于多个客户。因此它支持多租户。

我们跳过的是容器以及是否支持多租户的问题。这是我认为你的问题的答案在于。

请务必记住,Docker容器不是虚拟机使用docker run [IMAGE]时,您正在创建一个新的容器实例。这些实例是短暂的和不可变的。他们运行一个进程,并在进程存在时立即退出。但它们并不旨在让多个用户连接到它们并同时运行命令。这是多租户会是什么。相反,Docker容器只是过程的独立执行环境。

概念上,echo Hellodocker run echo Hello在这个例子中是一样的。他们都在新的执行环境(进程与容器)中执行命令,两者都不支持多租户。

我希望这个答案是可读的并且回答你的问题。让我知道是否有任何我应该澄清的部分。