加入RUN!PC粉絲團
最近新增的精選文章
 
最多人點閱的精選文章
 
 
精選文章 - 開發技術
分享到Plurk
分享到FaceBook
 
10個讓Docker威力倍增的開放原始碼軟體
文/Serdar Yegulalp 譯/兩三松 2015/3/23 下午 12:31:53

  要確認一個軟體專案是否成功,通常是看其生態系統所衍生出的成果是否豐碩。為專案所打造的周邊工具、後續發展,以及它的核心技術發展,都能為這個軟體專案提供新的動力,提升可使用性,並且推動專案持續向前邁進。此次我們以Docker為例說明。Docker是一個將軟體container化的系統,讓資訊技術人員得以專注在發展應用程式,而非虛擬機器上,就如同生產線上的標準單位範例一樣。



  Docker目前已引起許多軟體原廠和協力廠商程式開發者的關注,而這尚未計入豐富的專案延伸軟體、評論,以及為Docker強化的功能。我們要介紹10項最值得關注的相關工具,它們正在發展中,其中部分軟體在長期下有機會被納入Docker當中。

●專案名稱:Kubernetes
  在提到Docker的外部第三方協力專案時,如果沒有提到Kubernetes,就表示遺漏了重要項目。Kubernetes是一個由Google所發展出來的Docker管理工具開放原始碼專案,用來協助在不同叢集群和不同電腦中部署container。除了透過在叢集群中保持container的部署平衡來協助管理Docker節點的工作負載,Kubernetes同時提供了讓container之間彼此溝通的功能,以減少開放網路埠的需求,也能增加其他修改創新的機會。Kubernetes的這些特色與功能,和Docker一樣是以Go語言寫成,未來將因此很有機會被併入到Docker之內。
※GitHub: https://github.com/GoogleCloudPlatform/kubernetes


●專案名稱:Dockersh
  如果系統管理者打算讓一般使用者取得shell層的存取權限,但又擔心可能會造成資訊安全問題時,Dockersh提供一個Docker化的方式,為shell程序提供高出平均水準的資訊安全管控能力。
Dockersh可讓多位使用者連結至一個設定好的範圍(box),每一個使用者的shell,都是在管理者所指定的獨立Docker container當中執行。使用者可以看到他們的根目錄,也可以重覆更改;但他們只能看到他們自己的行程(process),也只能在他們個人的私有網路堆疊(stack)中執行。Dockersh的原創者對於潛在的資訊安全漏洞顯得相當謹慎,同時也建議在Docker改善資安疑慮之前,先不要將Dockersh用來提供未經限制的公開存取使用。但如果只看提供shell存取服務這個概念,Dockersh是相當值得關注的。
※GitHub: https://github.com/Yelp/dockersh

●專案名稱:DockerUI
  大多數的程式開發者和系統管理者,是透過命令列創建與執行 Docker container,Docker的遠端遙控API讓這些container可以透過含傳輸狀態的 API(RESTful API),執行相同的指令。進入DockerUI 之後,這個Web前端程式允許管理者利用Web瀏覽器的命令列同時管理多項工作。只須透過單一連結,就能一次操控所有在特定主機上執行的container,同時專案之間並不會產生依存性。DockerUI目前仍然在開發階段,屬於MIT授權,所以可被免費授權重覆使用。除此之外,DockerUI並未內建認證或資訊安全機制,所以在將DockerUI進行的連結對外公開時,請先確認是否已先設定密碼保護。
※GitHub: https://github.com/crosbymichael/dockerui

●專案名稱:Shipyard
  Shipyard採用了Citadel叢集管理工具集,讓系統管理者在管理 Docker container 叢集時可以擴大管理至多個主機。透過Shipyard的Web介面,系統管理者能夠一目了然地得知每個container使用了多少CPU和記憶體資源、有那些container正在執行中,還能檢視所有叢集中的事件記錄(log)。Shipyard當中已包含了完整的API和命令列介面(CLI),同時特別製作的Docker影像檔(也就是延伸檔)能夠用來擴充Shipyard的功能。Shipyard目前仍在開發階段,但是透過Interlock專案,已可取得平衡負載與路由(load-balancing/routing)功能的影像檔。
※GitHub: https://github.com/shipyard/shipyard

●專案名稱:Kitematic
  目前有好幾個促使Docker成為蘋果OS X作業系統桌面環境開發者工具的專案,Kitematic是其中之一。它能啟動Docker影像檔下載程序、進行加速,並且簡化管理程序。也就是說,它是類似以 VMware Workstation 管理虛擬機器的應用程式。其他類似的專案還有 DVM、Docker OS X 和 OS X Installer。目前Kitematic是這些程式當中最好的一個,但它目前的主要缺點是反安裝程序並不方便。
※GitHub: https://github.com/kitematic/kitematic

●專案名稱:Logspout
  Docker目前尚未提供能夠管理來自 Docker container 內程式執行所產的歷程記錄(log)管理機制。Logspout是以BusyBox做為核心,約14MB的 Docker container,它能夠將container應用程式歷程記錄傳送到單一存放位置,就如同單一JSON物件,或是透過HTTP API獲取一個變動端點。Logspout目前仍受限於它能夠發現的項目不多,如container的stdout與stderr輸出記錄,但是已計畫追上Docker所能提供的歷程記錄,加入更多完整的歷程記錄功能,值得大家未來持續關注。
※GitHub: https://github.com/progrium/logspout

●專案名稱:Autodock
  Docker自動化工作也算是一種商業軟體。總結來說,更容易達到的自動化難道不是Docker計畫中的一環?但是Autodock有幾項不同的特點。它採用Salt和SaltStack做為在環境中可正常運作的主要自動化技術依據,同時它在具有最少負載的Docker叢集中選定指派的伺服器,因此能夠在新建container的程序上特別加速。不過對Autodock的小抱怨是它需要預先安裝好幾項程式才能運作(如SaltStack、Golang、Etcd和Python)
※GitHub: https://github.com/cholcombe973/autodock

●專案名稱:Docker-in-Docker
  Docker-in-Docker 正如其名,是一種讓系統管理者在 Docker container 當中執行Docker的方式,在 Docker 0.6 版之後的container特權模式(privileged mode)下可執行。有人覺得這像電影「全面啟動」中的情節嗎?
  撇開這些噱頭和玩笑,DIND對於想要在 Docker container 當中提供Docker服務的系統管理者而言相當有用,像是系統管理者想要測試自動化工具或新方法論時就能派上用場。值得關注的是,Docker這項內部instance其實是最新的Docker二進位碼,一旦建置完成,就能從 docker.io 網站中取得。同時也要注意以這種型態執行的instance也要在特權模式下執行,正因如此,系統管理者在將這些instance公開至非Docker化的外部環境時,必須要特別小心。
※GitHub: https://github.com/jpetazzo/dind

●專案名稱:Heroku-Docker
  Heroku是一個支持多國語系的傑出PaaS平台,但Docker讓近似PaaS系統的工作得以移至各個不同地方執行。也因如此,尋找將現有Keroku專案移植到Docker上而不必重建程式的人已不用再費神。這個小而美的專案透過命令列,讓現有Heroku應用程式轉換為Docker影像檔,同時在整個操作過程中只需幾行指令就行順利完成。
※GitHub: https://github.com/ddollar/heroku-docker

●專案名稱:Docker Node Tester
  如果打算以一項最當紅的IT技術做為測試機制,用以驗證另一項全新的IT科技時,系統管理者應當如何進行?Docker Node Tester (DNT) 為 Node.js 專案提供了測試基礎環境,能夠在 Docker container 中執行不同版本的 Node.js,接著列出所有輸出結果。系統管理者也能自動在最新的Node版本中進行測試,不用再去頭痛版本問題。要注意的是,不同版本的Node都是以原始碼建置而成,這意味著系統管理者最終會在伺服器上留住一份完整的Node原始碼各種版本,請先確認有足夠的空間存放才行。
※GitHub: https://github.com/rvagg/dnt