这是一个比较棘手的问题,可能有其他人比我更擅长回答。但是我会尽力解答。
让我们先看一下“多租户”(multi tenancy)的定义(来源于
这里):
“多租户是一种架构,一个软件应用程序的单个实例可以为多个客户提供服务。”
很难把Docker放在这个定义中。可以说它既是实例又是应用程序,这就导致了混淆。
我们将Docker分为三个部分:守护进程(daemon)、容器(container)和应用程序(application)。
守护进程安装在主机上并运行Docker容器。守护进程确实支持多租户,因为它可以被同一系统上的多个用户使用,每个用户都有自己的配置文件在
~/.docker
中。
Docker容器运行单个进程,我们称之为应用程序。
应用程序可以是任何东西。例如,假设Docker容器运行一个像论坛之类的Web应用程序。该论坛允许用户登录并在其名称下发布文章。它是一个为多个客户提供服务的单个实例,因此支持多租户。
我们忽略的是容器和它是否支持多租户的问题。这就是我认为你问题的答案所在的地方。
重要的是要记住,Docker容器不是虚拟机。 当使用
docker run [IMAGE]
时,您正在创建一个新的容器实例。这些实例是短暂且不可变的。它们运行单个进程,并在进程退出时退出。但是它们并不设计为让多个用户连接到它们并同时运行命令。这就是多租户的含义。相反,Docker容器只是用于进程的隔离执行环境。
概念上,在这个例子中,
echo Hello
和
docker run echo Hello
是一样的。它们都在新的执行环境(进程与容器)中执行命令,都不支持多租户。
希望我的回答清晰易懂,能够解答你的问题。如果有任何需要澄清的地方,请告诉我。