如今是時候使用Docker安裝一個多節點Codenvy On-Prem和Eclipse Che了。node
Docker容器包裝一塊軟件到一個文件系統,這裏麪包含一切它運行的要素:code, runtime, system tools, 以及libraries。無論運行環境如何,容器老是保證相同的運行。容器將打包和部署轉化爲獨立單元,使軟件開發團隊更容易提升DevOps效率。bootstrap
Codenvy一直使用容器支持builds, runners以及 workspaces好幾年了。咱們如今支持在容器內運行Codenvy。服務器
Eclipse Che是一個現代的、開放源代碼的軟件開發環境。它是一個經過提供結構化的工做區、項目輸入、模塊化擴展插件來支持Codenvy的引擎。Che能夠用做桌面IDE,RESTful工做空間服務器,或做爲一個建立新的工具SDK。咱們如今支持一個有標籤的Docker images啓動一個默認Eclipse Che。網絡
容器的容器是無狀態的,重複運行將清除保存在容器內數據。你能夠保存你的工做區到外部容器的external volume。ide
若是你不想麻煩安裝volume,還能夠snapshot容器,而且保存一個新的image到本地磁盤。而後你能夠啓動保存的圖像,它重啓容器在最後保存的狀態。這個過程是有狀態的,但你必須等待snapshot 寫和讀操做完成。模塊化
Codenvy On-Prem 是Codenvy的一個版本,你能夠運行在本身的服務器上。也能夠做爲一個單節點(在一個主機上)或做爲一個多節點系統運行 (服務跨集羣以及分佈在不一樣的主機上)。對咱們來講,簡單和快速安裝、升級、備份,並定製Codenvy On-Prem一直是咱們的最高目標。微服務
你如今可使用Docker安裝Codenvy On-Prem多節點。
雖然這安裝技術是生產測試,請閱讀下面的報告,你能夠熟悉一下這裏面的一些特定的訪問控制和使用Docker可能會遇到的風險。這個安裝程序只支持Linux。工具
Codenvy On-Prem須要八個節點。有了這個安裝程序,咱們在它們本身的容器啓動每一個節點。八大容器都是相同的——從一個specialized CentOS 7 image的實例化。空CentOS容器啓動後,咱們調用Codenvy’s bootstrap installer,依次進行,Puppet下載安裝並配置Codenvy。測試
Codenvy須要每一個節點配置一個匹配字符串模式的hostname。可是爲了各類容器看到對方,存在於每一個容器的/etc/hosts文件必須隨着其餘容器的IP地址更新。這些IP地址將在容器啓動以後纔會知道。因此安裝程序有一些額外的邏輯啓動容器,發現它們的IP地址,並執行到每一個容器,並隨着其餘容器的IP地址更新/etc/hosts文件。咱們執行這項工做來建立一個可發現的、鏈接網絡的容器,驗證以後,Codenvy引導安裝開始。當重啓已經保存的容器,咱們作一個相似的進程利用任一個新的IP地址更新每一個容器。ui
看似簡單的容器。從表面上看,它們是很小的部署單位。你從一個image激活一個容器就搞定一切。容器執行一般是無狀態的,每一個執行不記得以前的執行。這意味着內部狀態數據,好比咱們在LDAP和MongoDB對用戶的存儲必須具體化。
你能夠從一個用於將來運行的容器建立新的images。咱們已經嵌入中止和重啓選項到安裝腳本里,這會讓你的容器狀態做爲layer寫進image。在未來的版本中,咱們將支持容器編排器Docker Swarm,這將給你另一種方法具體化內部數據。
Codenvy On-Prem的Docker安裝不支持單節點配置。單節點Codenvy打包很是打,並且Docker不適合在一個容器中運行數十個微服務。
Codenvy On-Prem multi-node全部的容器必須在特權模式下運行,這種模式容許容器以near-root訪問進程和運行在其主機上的文件。這是必要的,有兩個緣由:
1。咱們的runner nodes必須在Docker裏面運行Docker容器。
2。咱們使用Puppet執行內部配置管理,它須要訪問全部節點,甚至一些等底層主機如AppArmor或SELinux的文件。
特許模式在不一樣的操做系統下不穩定。你能夠嘗試一下。
本文由趙帥龍編譯整理