讓Docker功能更強大的10個開源工具

edithfang發表於2014-11-05
軟體專案的成功常常根據其催生的生態系統來衡量。圍繞或基於核心技術構建的專案增添了功能和易用性,它們常常日臻完善。Docker就是一個典例,這個軟體容器化系統讓IT部門可以專注於應用程式、而不是虛擬機器,作為生產的標準單位。

Docker一向備受第一方和第三方開發人員的關注,而眾多專案擴充套件、補充或改進Docker,卻沒有成為Docker的一部分。下面是如今正在開發中的10個最知名的專案,從長遠來看,有些專案有機會成為Docker的一部分。

Kubernetes



談論第三方Docker專案自然少不了提到Kubernetes,這是谷歌開發的一款開源Docker管理工具,用於跨計算機叢集部署容器。除了通過讓叢集上部署的容器保持均衡,從而有助於管理Docker節點的工作負載外,Kubernetes還提供了讓容器可以彼此聯絡的方法,不需要開啟網路埠或執行其他操作。這些功能,加上Kubernetes用Go編寫的事實(Docker也用這種語言編寫),強烈表明它在未來某個時間會併入到Docker。

專案:Kubernetes

GitHub:https://github.com/GoogleCloudPlatform/kubernetes

Dockersh



如果你想讓使用者可以訪問外殼(shell),可是對由此帶來的安全後果有顧慮,Dockersh提供了一種Docker化的方式,為外殼會話提供高於平均水平的安全性。

Dockersh讓多個使用者可以連線到某個主機,每個使用者都執行自行選擇的單獨的Docker容器所生成的外殼。使用者可以檢視其主目錄,並對主目錄進行永久性更改,但他們只能看到自己的程式,而且只能使用自己的專用網路堆疊。開發者擔心Dockersh裡面的潛在安全漏洞,不建議它用於不受限制的公眾訪問,至少在Docker以這種方式加以改進之前不建議這麼做。而光這個概念就讓這個專案值得關注。

專案:Dockersh

GitHub:https://github.com/Yelp/dockersh

DockerUI



雖然大多數開發人員和管理人員通過命令列來建立及執行Docker容器,但Docker的Remote API讓他們可以通過充分利用REST(代表性狀態傳輸協議)的API,執行相同的命令。這時,DockerUI有了用武之地。這個Web前端程式讓你可以處理通常通過Web瀏覽器的命令列來管理的許多工。某一個主機上的所有容器都可以通過僅僅一條連線來處理,該專案幾乎沒有任何依賴關係。不過,它仍在大力開發之中,但是它採用麻省理工學院(MIT)許可證,所以可以免費地重複使用。此外,它不包含任何內建的身份驗證或安全機制,所以務必將任何公之於眾的DockerUI連線放在用密碼來保護的系統後面。

專案:DockerUI

GitHub:https://github.com/crosbymichael/dockerui

Shipyard



Shipyard使用Citadel叢集管理工具包,簡化對橫跨多個主機的Docker容器叢集進行管理。通過Web使用者介面,你可以大致瀏覽相關資訊,比如你的容器在使用多少處理器和記憶體資源、在執行哪些容器,還可以檢查所有叢集上的事件日誌。包含完整的API和命令列介面(CLI),而專門構建的Docker映象(又叫擴充套件映象)可用來擴充套件Shipyard的功能。這後一個想法仍在開發之路,不過可以通過Interlock專案,獲得負載均衡/路由映象。

專案:Shipyard

GitHub:https://github.com/shipyard/shipyard

Kitematic



許多專案旨在讓Docker成為基於OS X的程式設計員們手裡一款實用的桌面環境開發工具,而Kitematic正是其中之一。它簡化了下載Docker映象、啟動這些映象以及管理它們的過程,讓這項任務變得如同在VMware Workstation等應用程式中使用虛擬機器一樣簡單。同一類別的其他專案包括:DVM、Docker OS X和OS X Installer,不過Kitematic很可能是這批專案中最完善的。唯一的重大缺點是,解除安裝過程有點錯綜複雜。

專案:Kitematic

GitHub:https://github.com/kitematic/kitematic

Logspout



Docker還沒有提供一種方法來管理在Docker容器裡面執行的程式所生成的日誌。Logspout是一個Docker容器,大小僅14MB,使用BusyBox作為其核心,它可以將來自容器應用程式的日誌傳送到某一箇中央位置,比如單一JSON物件或者通過HTTP API可獲得的流式端點。就挖掘的資訊方面而言,Logspout目前功能有限,因為它只能實現容器的標準輸出(stdout)和標準錯誤輸出(stderr),不過已計劃一旦Docker提供相關鉤子(hook),就允許更全面的日誌功能。將來應密切關注這個專案。

專案:Logspout

GitHub:https://github.com/progrium/logspout

Autodock



Docker自動化工具可以說是個大眾化產品。畢竟,更容易自動化不是Docker的全部意義嗎?但Autodock卻憑藉幾個不同之處脫穎而出。它被設計成可在使用Salt和SaltStack作為主要自動化技術的環境中執行,它還經過了專門的設計,通過確定某一個Docker叢集中哪些伺服器擁有的負載最小,以便儘快啟用新容器。一個可能存在的缺點是,讓它發揮功效需要好多基本元件(SaltStack、Golang、Etcd和Python)。

專案:Autodock

GitHub:https://github.com/cholcombe973/autodock

DIND(Docker-in-Docker)



Docker-in-Docker正如其名:這是讓你可以在Docker容器裡面執行Docker的一種方式,在Docker 6.0中實現的方式是,為容器新增特權模式。

拋開噱頭和笑話不說,如果你想把Docker本身作為一項服務提供給Docker容器,這個工具很有用――比如說,如果你想試用某種自動化工具或方法。請注意,Docker的“內部”例項是最新的Docker二進位制程式碼,構建時可以從docker.io來獲取。另外牢記一點:以這種方式執行的例項是在特權模式下執行的;正因為如此,你將它們暴露在非Docker化的外介面前時,需要採取更多的防範措施。

專案:Docker-in-Docker

GitHub:https://github.com/jpetazzo/dind

Heroku-Docker



Heroku曾是一種支援多種語言的出色的平臺即服務(PaaS),如今在一定程度上仍然是這樣,但Docker讓我們幾乎可以在任何地方從事類似PaaS的工作。為此,對那些想方設法將現有的Heroku專案遷移到Docker,又無須從頭開始重新構建的人來說,這是個不二的選擇。這個簡單的小專案拿來現有的Heroku應用程式後,可以從命令列將其轉換成Docker映象,執行整個操作只需要幾個命令就行。

專案:Heroku-Docker

GitHub:https://github.com/ddollar/heroku-docker

Docker Node Tester



當你使用某一項最熱門的新IT技術作為另一項熱門的新IT技術的測試機制時,會使用什麼?顯然是Docker Node Tester。DNT提供了一個測試平臺,Node.js專案針對Docker容器中多個版本的Node.js執行,然後以表格方式輸出結果。你還可以針對最前沿版本的Node進行測試,無論是什麼版本。請注意,不同版本的Node都是從原始碼構建的,這意味著你最後會得到Node整個原始碼樹的本地副本;確保你有足夠的空間來儲存它。

專案:Docker Node Tester

GitHub:https://github.com/rvagg/dnt

英文:http://www.itworld.com/article/2841314/10-open-source-tools-to-make-docker-even-more-powerful.htm
相關閱讀
評論(1)

相關文章