最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker大型項(xiàng)目容器化改造

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

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

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

一、如何開(kāi)始

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

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

二、容器分層

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

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

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

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

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

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

相關(guān)文章

  • docker倉(cāng)庫(kù)登錄及配置insecure-registries的方法

    docker倉(cāng)庫(kù)登錄及配置insecure-registries的方法

    這篇文章主要介紹了docker倉(cāng)庫(kù)登錄配置insecure-registries的方法,docker客戶端如果配置中添加了insecure-registary配置,就不需要在docker 客戶端配置上對(duì)應(yīng)證書,如果不配置要在/etc/docker/certs.d/目錄中添加對(duì)應(yīng)證書才能正常登錄,感興趣的朋友跟隨小編一起看看吧
    2022-07-07
  • 詳解Docker數(shù)據(jù)管理(數(shù)據(jù)卷&數(shù)據(jù)卷容器)

    詳解Docker數(shù)據(jù)管理(數(shù)據(jù)卷&數(shù)據(jù)卷容器)

    容器中管理數(shù)據(jù)主要有兩種方式,這篇文章主要介紹了詳解Docker數(shù)據(jù)管理(數(shù)據(jù)卷&數(shù)據(jù)卷容器) ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Docker鏡像加速的詳細(xì)教程

    Docker鏡像加速的詳細(xì)教程

    Docker 鏡像非常輕量級(jí),它們是基于分層的文件系統(tǒng)構(gòu)建的,因此許多 Docker 鏡像可以共享相同的基礎(chǔ)鏡像,這也使得它們?cè)诖鎯?chǔ)和傳輸時(shí)非常高效,這篇文章主要介紹了Docker鏡像加速的詳細(xì)教程,需要的朋友可以參考下
    2024-02-02
  • 基于docker-compose構(gòu)建Mongodb副本集的示例詳解

    基于docker-compose構(gòu)建Mongodb副本集的示例詳解

    副本集是?MongoDB?高可用性和數(shù)據(jù)安全性策略的基礎(chǔ),適用于對(duì)數(shù)據(jù)安全性和服務(wù)可用性有較高要求的場(chǎng)景,本文給大家介紹了如何基于docker-compose構(gòu)建Mongodb副本集,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • 帶你快速了解Docker和k8s的使用及說(shuō)明

    帶你快速了解Docker和k8s的使用及說(shuō)明

    這篇文章主要介紹了帶你快速了解Docker和k8s的使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Dockerfile制作鏡像的常用指令詳解

    Dockerfile制作鏡像的常用指令詳解

    這篇文章主要介紹了Dockerfile制作鏡像的常用指令,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • docker安裝influxdb的詳細(xì)教程(性能測(cè)試)

    docker安裝influxdb的詳細(xì)教程(性能測(cè)試)

    這篇文章主要介紹了docker安裝influxdb的詳細(xì)教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 如何使用docker部署前端應(yīng)用的方法步驟

    如何使用docker部署前端應(yīng)用的方法步驟

    這篇文章主要介紹了如何使用docker部署前端應(yīng)用的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-03-03
  • docker安裝nginx并配置ssl的方法步驟

    docker安裝nginx并配置ssl的方法步驟

    本文主要介紹了docker安裝nginx并配置ssl的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • Docker搭建Gogs的實(shí)現(xiàn)步驟

    Docker搭建Gogs的實(shí)現(xiàn)步驟

    本文主要介紹了Docker搭建Gogs的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02

最新評(píng)論

南通市| 三河市| 韶山市| 金乡县| 贡嘎县| 莱州市| 鄂尔多斯市| 武平县| 东台市| 黄骅市| 全椒县| 探索| 汉源县| 深州市| 龙口市| 安陆市| 田东县| 额尔古纳市| 赫章县| 砚山县| 桐乡市| 华蓥市| 黄陵县| 马龙县| 定安县| 西畴县| 华坪县| 平远县| 江达县| 墨竹工卡县| 英超| 沙湾县| 新疆| 衡阳市| 黑河市| 河南省| 扬中市| 昌图县| 广安市| 兴海县| 临湘市|