欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker大型項目容器化改造

 更新時間:2019年01月27日 11:14:40   作者:Moment°回憶  
今天小編就為大家分享一篇關于Docker大型項目容器化改造,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

虛擬化和容器化是項目云化不可避免的兩個問題。虛擬化由于是純平臺操作,一個運行于linux操作系統(tǒng)的項目幾乎不需要做任何改造就可以支持虛擬化。而項目如果要支持容器化則需要做許多細致的改造工作。容器化相對于虛擬化的優(yōu)勢也相當明顯,運行于裸機性能高,秒級啟停容器,更不用說開發(fā)、測試、布署一致的環(huán)境(DevOps理念),以及上篇提到的微服務的能力。大家還可以找到各種文章來介紹容器化(Docker)的知識,這里我們就不一一贅述。下面我們會根據(jù)項目的實際情況,介紹下容器化改造會面臨的問題和解決方案。

一個幾十萬行c++代碼、大幾十個應用程序的大型項目進行容器化。如何對原來的代碼改造最小,甚至代碼都不需要修改。如何靜悄悄的,甚至不讓業(yè)務程序員發(fā)覺。如何將業(yè)務鏡像的體積做到最小。如何快速地制作一個業(yè)務鏡像。這些一直是困擾我們多時的問題。容器分類的時候,如果需要對代碼組織方式和架構進行調(diào)整,對于幾十萬行的項目將會是一個災難。容化改造完后,如果開發(fā)模式變化太劇烈,無可避免會面臨幾十個、上百個業(yè)務程序員重新學習適應的過程,成本驚人。業(yè)務鏡像的大小直接影響對現(xiàn)場更新容器方便與否的問題,特別是當項目在海外,網(wǎng)絡速度不是很快的情況下。自動化、快速的鏡像制作是能否進行敏捷開發(fā)的關鍵。

一、如何開始

如何將一個運行于linux的項目挪到容器里面去運行通常是遇到的第一個問題。網(wǎng)上找一個帶gcc編譯器和linux操作系統(tǒng)的基礎鏡像,基于這個鏡像可以先制作一個編譯和CI檢查(代碼檢查、運行單元測試等等)的構建鏡像。利用構建鏡像進行編譯和CI檢查,然后基于基礎鏡像制作運行鏡像,將編譯好的庫和可執(zhí)行程序拷貝進去(通過Dockerfile)。這樣一個最簡單鏡像就制作好了。

上面方法做出來的業(yè)務鏡像可以運行,但有兩個問題,制作的時間特別長(我們項目需要一個小時)、鏡像的業(yè)務層特別大(我們項目有1個G)。兩個問題不是特別嚴重,但如果項目拿去商用就是一個很麻煩的問題。

二、容器分層

容器分層的概念是Docker的核心概念,就是支持每個容器可以“繼承”自另外一個容器。這里的繼承跟面向?qū)ο罄锏睦^承應該是同一個概念。這樣除了可以帶來“繼承”特性的好處,底層鏡像變動時,不需要去更新上層的鏡像,這樣就可以少更新很多東西。的確很妙,面向?qū)ο蟮睦^承我都沒覺得有這么好用!受這個特性影響,我們將項目用到的第三方庫單獨提出來做成一層。制作的流程也相應地變成下圖所示。

雖然過程多了一步,但效果也是立竿見影的,業(yè)務層的制作時間從原來1個小時縮短為12分鐘,大小也變?yōu)?00M左右。

三、業(yè)務容器分類

在Docker最佳實踐的建議里面,建議一個容器最好只跑一種程序,或者一類程序。像原來那樣,一個容器跑幾十個進程一定是不合適的。分類清晰的容器也便于管理和進行各種操作。同時,在微服務的最佳實踐里面,建議將項目的代碼分割成一個個的微服務。每個微服務的代碼由不同的團隊維護,各自獨立。我們先暫時不討論這種方式的優(yōu)缺點。原先的項目是一個幾十萬行、幾十個程序的大項目,有幾十個人開發(fā)人員,有無數(shù)的公共模塊,每個模塊間相互引用也很普遍,每個程序由數(shù)量不等的模塊來組成。如果按上面的建議來進行Docker的業(yè)務分類,無疑會給項目帶來巨變,并且涉及組織架構的大調(diào)整,幾乎是一個不可能的任務。那么如何做既可以對容器進行分類,又保持原有的開發(fā)模式不變。有時候察覺不到改變才是推進一項新技術的最佳方式。

方法其實也很簡單,容器里面有一個叫docker-entrypoint.sh的角本,管理容器啟動后要啟動哪些進程。上面我們已經(jīng)制作了一個項目統(tǒng)一的鏡像,在分類的時候,我們只要根據(jù)不同類型容器,修改不同的docker-entrypoint.sh來啟動不同類型的進程就可以了。要配合設置不同的環(huán)境變量,不同的配置文件等等。當然,這一切都很容易!

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內(nèi)容請查看下面相關鏈接

相關文章

  • docker-compose啟動docker文件掛載失敗的解決

    docker-compose啟動docker文件掛載失敗的解決

    這篇文章主要介紹了docker-compose啟動docker文件掛載失敗的解決方案。具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • docker修改默認存儲位置圖文教程

    docker修改默認存儲位置圖文教程

    最近在學習docker的路上,今天遇到了個問題,在網(wǎng)上查找了一下資料,順便留個筆記,下面這篇文章主要給大家介紹了關于docker修改默認存儲位置的相關資料,需要的朋友可以參考下
    2022-09-09
  • 如何使用Docker定時備份數(shù)據(jù)

    如何使用Docker定時備份數(shù)據(jù)

    這篇文章主要介紹了如何使用Docker定時備份數(shù)據(jù),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-04-04
  • docker搭建dnsmasq服務的實現(xiàn)

    docker搭建dnsmasq服務的實現(xiàn)

    本文將指導讀者如何使用Docker搭建DNSmasq服務,通過簡單的步驟和詳細的說明,幫助讀者快速在Docker環(huán)境中部署DNSmasq,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • docker-compose的build使用方式

    docker-compose的build使用方式

    這篇文章主要介紹了docker-compose的build使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • docker離線安裝社區(qū)版(docker-18.06.3-ce)

    docker離線安裝社區(qū)版(docker-18.06.3-ce)

    在一些特定的環(huán)境下,由于網(wǎng)絡限制或者其他原因,我們可能需要在Linux系統(tǒng)上進行離線安裝Docker,本文就來介紹一下docker離線安裝社區(qū)版,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Docker v1.13.0 正式版發(fā)布

    Docker v1.13.0 正式版發(fā)布

    本文給大家分享的是Docker v1.13.0 正式版發(fā)布的信息,最近一直在學習docker中,所以關注的比較多,這里分享給大家
    2017-01-01
  • Docker 容器監(jiān)控原理及 cAdvisor的安裝與使用說明

    Docker 容器監(jiān)控原理及 cAdvisor的安裝與使用說明

    這篇文章主要介紹了Docker 容器監(jiān)控原理及 cAdvisor的安裝與使用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • docker配置阿里云鏡像倉庫的實現(xiàn)

    docker配置阿里云鏡像倉庫的實現(xiàn)

    本文主要介紹了docker配置阿里云鏡像倉庫的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • 詳解Windows?利用?WSL2?安裝?Docker?的2種方式

    詳解Windows?利用?WSL2?安裝?Docker?的2種方式

    這篇文章主要介紹了Windows?利用?WSL2?安裝?Docker?的2種方式,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10

最新評論