2017-06-16 139 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在這個例子中是一樣的。他們都在新的執行環境(進程與容器)中執行命令,兩者都不支持多租戶。

我希望這個答案是可讀的並且回答你的問題。讓我知道是否有任何我應該澄清的部分。