項目為什么用docker?
什么是Docker?
自2012年發布以來,Docker已成為devop和Web開發中增長最快的技術之一。但是,像任何新技術一樣,它仍在開發中,存在一些局限性,并不適合每個項目。本指南概述了Docker的優缺點,以便您可以決定是否對您的項目有好處。
有關Docker概念和術語的更基本介紹,請參閱《Docker簡介》指南。
Docker Permalink的好處可重復性:類似于Java應用程序,它將在能夠運行Java虛擬機的任何設備上完全相同地運行,因此,保證Docker容器在可以運行Docker的任何系統上都是相同的。容器的確切規范存儲在Dockerfile中。
通過在團隊成員之間分發此文件,組織可以保證從同一Dockerfile構建的所有映像將具有相同的功能。此外,擁有一個恒定且有據可查的環境,可以更輕松地跟蹤您的應用程序并確定問題。
隔離:容器內的依賴項或設置不會影響您的計算機或任何其他正在運行的容器上的安裝或配置。通過為應用程序的每個組件(例如,用于承載網站的Web服務器,前端和數據庫)使用單獨的容器,可以避免相互沖突的依賴關系。您也可以在單個服務器上有多個項目,而不必擔心在系統上造成沖突。
安全性:在進行重要警告時(如下所述),將大型應用程序的不同組件劃分到不同的容器中可以帶來安全性好處:如果一個容器遭到破壞,其他容器則不受影響。
Docker Hub:對于常見或簡單的用例,例如LAMP堆棧,保存圖像并將其推送到Docker Hub的能力意味著已經有許多維護良好的圖像。能夠快速提取預制映像或從官方維護的Dockerfile構建,可以使這種設置過程極其快速和簡單。
環境管理:Docker使使用nginx維護不同版本的網站變得容易,例如。您可以在同一個Linode上有一個單獨的容器來進行測試,開發和生產,并輕松地部署到每個容器上。
持續集成:Docker作為Travis,Jenkins和Wercker等工具的持續集成管道的一部分,可以很好地工作。每次您的源代碼更新時,這些工具都可以將新版本保存為Docker映像,用版本號標記它并推送到Docker Hub,然后將其部署到生產環境中。
何時使用Docker如果您的應用程序符合以下一個或多個類別,則Docker可能是一個很好的選擇:
學習新技術:為了在不花時間安裝和配置的情況下開始使用新工具,Docker提供了一個隔離的一次性環境。許多項目維護的Docker映像及其應用程序已經安裝和配置。例如,如果您想簽出Zipkin之類的分布式跟蹤系統,只需運行以下命令即可在localhost上進行有效的設置:
sudo docker run -d -p 9411:9411 openzipkin/zipkin基本用例:如果您的應用程序足夠基本或標準,可以使用默認Docker映像,則從Docker Hub提取映像也是一個很好的解決方案。使用LAMP堆棧托管網站,使用反向代理或設置Minecraft服務器等案例通常在DockerHub上具有官方或受良好支持的映像。如果這些映像中的默認配置可以滿足您的需要,那么拉取映像可以節省大量時間,否則將花費大量時間來設置環境和安裝必要的工具。
應用程序隔離:如果要在一臺服務器上運行多個應用程序,請將每個應用程序的組件放在單獨的容器中將防止依賴性管理出現問題。
開發人員團隊:如果您的開發人員使用不同的設置,則Docker提供了一種便捷的方法來擁有與生產環境緊密匹配的本地開發環境,而無需使用ssh放入遠程設備。
您應該使用Docker容器嗎?Docker已經成為使用容器配置,保存和共享服務器環境的一種非常流行的方式。因此,安裝應用程序甚至大型堆棧通??梢韵襁\行docker pull或一樣簡單docker run。將應用程序功能分離到不同的容器中還提供了安全性和依賴性管理方面的優勢。
但是,Docker不能替代系統工程或配置管理,并且它的方法也有缺點。開發人員應該抵制將其創建的每個應用程序進行容器化的誘惑,僅僅是因為Docker是一種流行且用戶友好的解決方案。與任何工具一樣,在決定是否使用Docker之前,應仔細研究任何項目的需求。