讓Docker功能更強(qiáng)大的10個(gè)開源工具
譯文軟件項(xiàng)目的成功常常根據(jù)其催生的生態(tài)系統(tǒng)來衡量。圍繞或基于核心技術(shù)構(gòu)建的項(xiàng)目增添了功能和易用性,它們常常日臻完善。Docker就是一個(gè)典例,這個(gè)軟件容器化系統(tǒng)讓IT部門可以專注于應(yīng)用程序、而不是虛擬機(jī),作為生產(chǎn)的標(biāo)準(zhǔn)單位。
Docker一向備受***方和第三方開發(fā)人員的關(guān)注,而眾多項(xiàng)目擴(kuò)展、補(bǔ)充或改進(jìn)Docker,卻沒有成為Docker的一部分。下面是如今正在開發(fā)中的10個(gè)最知名的項(xiàng)目,從長遠(yuǎn)來看,有些項(xiàng)目有機(jī)會成為Docker的一部分。
Kubernetes
談?wù)摰谌紻ocker項(xiàng)目自然少不了提到Kubernetes,這是谷歌開發(fā)的一款開源Docker管理工具,用于跨計(jì)算機(jī)集群部署容器。除了通過讓集群上部署的容器保持均衡,從而有助于管理Docker節(jié)點(diǎn)的工作負(fù)載外,Kubernetes還提供了讓容器可以彼此聯(lián)系的方法,不需要開啟網(wǎng)絡(luò)端口或執(zhí)行其他操作。這些功能,加上Kubernetes用Go編寫的事實(shí)(Docker也用這種語言編寫),強(qiáng)烈表明它在未來某個(gè)時(shí)間會并入到Docker。
項(xiàng)目:Kubernetes
GitHub:https://github.com/GoogleCloudPlatform/kubernetes
Dockersh
如果你想讓用戶可以訪問外殼(shell),可是對由此帶來的安全后果有顧慮,Dockersh提供了一種Docker化的方式,為外殼會話提供高于平均水平的安全性。
Dockersh讓多個(gè)用戶可以連接到某個(gè)主機(jī),每個(gè)用戶都運(yùn)行自行選擇的單獨(dú)的Docker容器所生成的外殼。用戶可以查看其主目錄,并對主目錄進(jìn)行***性更改,但他們只能看到自己的進(jìn)程,而且只能使用自己的專用網(wǎng)絡(luò)堆棧。開發(fā)者擔(dān)心Dockersh里面的潛在安全漏洞,不建議它用于不受限制的公眾訪問,至少在Docker以這種方式加以改進(jìn)之前不建議這么做。而光這個(gè)概念就讓這個(gè)項(xiàng)目值得關(guān)注。
項(xiàng)目:Dockersh
GitHub:https://github.com/Yelp/dockersh
DockerUI
雖然大多數(shù)開發(fā)人員和管理人員通過命令行來創(chuàng)建及運(yùn)行Docker容器,但Docker的Remote API讓他們可以通過充分利用REST(代表性狀態(tài)傳輸協(xié)議)的API,運(yùn)行相同的命令。這時(shí),DockerUI有了用武之地。這個(gè)Web前端程序讓你可以處理通常通過Web瀏覽器的命令行來管理的許多任務(wù)。某一個(gè)主機(jī)上的所有容器都可以通過僅僅一條連接來處理,該項(xiàng)目幾乎沒有任何依賴關(guān)系。不過,它仍在大力開發(fā)之中,但是它采用麻省理工學(xué)院(MIT)許可證,所以可以免費(fèi)地重復(fù)使用。此外,它不包含任何內(nèi)置的身份驗(yàn)證或安全機(jī)制,所以務(wù)必將任何公之于眾的DockerUI連接放在用密碼來保護(hù)的系統(tǒng)后面。
項(xiàng)目:DockerUI
GitHub:https://github.com/crosbymichael/dockerui
Shipyard
Shipyard使用Citadel集群管理工具包,簡化對橫跨多個(gè)主機(jī)的Docker容器集群進(jìn)行管理。通過Web用戶界面,你可以大致瀏覽相關(guān)信息,比如你的容器在使用多少處理器和內(nèi)存資源、在運(yùn)行哪些容器,還可以檢查所有集群上的事件日志。包含完整的API和命令行接口(CLI),而專門構(gòu)建的Docker鏡像(又叫擴(kuò)展鏡像)可用來擴(kuò)展Shipyard的功能。這后一個(gè)想法仍在開發(fā)之路,不過可以通過Interlock項(xiàng)目,獲得負(fù)載均衡/路由鏡像。
項(xiàng)目:Shipyard
GitHub:https://github.com/shipyard/shipyard
Kitematic
許多項(xiàng)目旨在讓Docker成為基于OS X的編程員們手里一款實(shí)用的桌面環(huán)境開發(fā)工具,而Kitematic正是其中之一。它簡化了下載Docker鏡像、啟動這些鏡像以及管理它們的過程,讓這項(xiàng)任務(wù)變得如同在VMware Workstation等應(yīng)用程序中使用虛擬機(jī)一樣簡單。同一類別的其他項(xiàng)目包括:DVM、Docker OS X和OS X Installer,不過Kitematic很可能是這批項(xiàng)目中最完善的。唯一的重大缺點(diǎn)是,卸載過程有點(diǎn)錯(cuò)綜復(fù)雜。
項(xiàng)目:Kitematic
GitHub:https://github.com/kitematic/kitematic
Logspout
Docker還沒有提供一種方法來管理在Docker容器里面運(yùn)行的程序所生成的日志。Logspout是一個(gè)Docker容器,大小僅14MB,使用BusyBox作為其核心,它可以將來自容器應(yīng)用程序的日志發(fā)送到某一個(gè)中央位置,比如單一JSON對象或者通過HTTP API可獲得的流式端點(diǎn)。就挖掘的信息方面而言,Logspout目前功能有限,因?yàn)樗荒軐?shí)現(xiàn)容器的標(biāo)準(zhǔn)輸出(stdout)和標(biāo)準(zhǔn)錯(cuò)誤輸出(stderr),不過已計(jì)劃一旦Docker提供相關(guān)鉤子(hook),就允許更全面的日志功能。將來應(yīng)密切關(guān)注這個(gè)項(xiàng)目。
項(xiàng)目:Logspout
GitHub:https://github.com/progrium/logspout
Autodock
Docker自動化工具可以說是個(gè)大眾化產(chǎn)品。畢竟,更容易自動化不是Docker的全部意義嗎?但Autodock卻憑借幾個(gè)不同之處脫穎而出。它被設(shè)計(jì)成可在使用Salt和SaltStack作為主要自動化技術(shù)的環(huán)境中運(yùn)行,它還經(jīng)過了專門的設(shè)計(jì),通過確定某一個(gè)Docker集群中哪些服務(wù)器擁有的負(fù)載最小,以便盡快啟用新容器。一個(gè)可能存在的缺點(diǎn)是,讓它發(fā)揮功效需要好多基本組件(SaltStack、Golang、Etcd和Python)。
項(xiàng)目:Autodock
GitHub:https://github.com/cholcombe973/autodock
DIND(Docker-in-Docker)
Docker-in-Docker正如其名:這是讓你可以在Docker容器里面運(yùn)行Docker的一種方式,在Docker 6.0中實(shí)現(xiàn)的方式是,為容器添加特權(quán)模式。
拋開噱頭和笑話不說,如果你想把Docker本身作為一項(xiàng)服務(wù)提供給Docker容器,這個(gè)工具很有用――比如說,如果你想試用某種自動化工具或方法。請注意,Docker的“內(nèi)部”實(shí)例是***的Docker二進(jìn)制代碼,構(gòu)建時(shí)可以從docker.io來獲取。另外牢記一點(diǎn):以這種方式運(yùn)行的實(shí)例是在特權(quán)模式下運(yùn)行的;正因?yàn)槿绱?,你將它們暴露在非Docker化的外界面前時(shí),需要采取更多的防范措施。
項(xiàng)目:Docker-in-Docker
GitHub:https://github.com/jpetazzo/dind
Heroku-Docker
Heroku曾是一種支持多種語言的出色的平臺即服務(wù)(PaaS),如今在一定程度上仍然是這樣,但Docker讓我們幾乎可以在任何地方從事類似PaaS的工作。為此,對那些想方設(shè)法將現(xiàn)有的Heroku項(xiàng)目遷移到Docker,又無須從頭開始重新構(gòu)建的人來說,這是個(gè)不二的選擇。這個(gè)簡單的小項(xiàng)目拿來現(xiàn)有的Heroku應(yīng)用程序后,可以從命令行將其轉(zhuǎn)換成Docker鏡像,執(zhí)行整個(gè)操作只需要幾個(gè)命令就行。
項(xiàng)目:Heroku-Docker
GitHub:https://github.com/ddollar/heroku-docker
Docker Node Tester
當(dāng)你使用某一項(xiàng)最熱門的新IT技術(shù)作為另一項(xiàng)熱門的新IT技術(shù)的測試機(jī)制時(shí),會使用什么?顯然是Docker Node Tester。DNT提供了一個(gè)測試平臺,Node.js項(xiàng)目針對Docker容器中多個(gè)版本的Node.js運(yùn)行,然后以表格方式輸出結(jié)果。你還可以針對最前沿版本的Node進(jìn)行測試,無論是什么版本。請注意,不同版本的Node都是從源代碼構(gòu)建的,這意味著你***會得到Node整個(gè)源代碼樹的本地副本;確保你有足夠的空間來存儲它。
項(xiàng)目: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
【編輯推薦】
- 如日中天的Docker解決了什么問題?
- Docker到底是什么?為什么它這么火!
- 如何在Fedora中為用戶授予使用Docker的權(quán)限?
- Docker與微軟展開戰(zhàn)略合作 實(shí)現(xiàn)基于Container的跨平臺應(yīng)用開發(fā)
- Docker自動化:StackEngine如何計(jì)劃讓生產(chǎn)環(huán)境的容器井然有序?
【責(zé)任編輯:林師授 TEL:(010)68476606】