Docker最全教程——從理論到實戰(zhàn)(一)

容器是應(yīng)用走向云端之后必然的發(fā)展趨勢,因此筆者非常樂于和大家分享我們這段時間對容器的理解、心得和實踐舆声。

本篇教程持續(xù)編寫了2個星期左右,只是為了大家更好地了解柳爽、理解和消化這個技術(shù)媳握,能夠搭上這波車。

你可以和我們一起討論磷脯,我們希望能夠多多交流蛾找,多多分享。

如果覺得不錯赵誓,請多多點贊打毛,你們的支持是我們前進的最大動力!


目錄

前言

隨著生產(chǎn)力的發(fā)展尤其是彈性架構(gòu)的廣泛應(yīng)用(比如微服務(wù))俩功,許多一流開發(fā)者都將應(yīng)用托管到了應(yīng)用容器上幻枉,比如Google、微軟诡蜓、亞馬遜熬甫、騰訊、阿里蔓罚、京東和新浪椿肩。


從未來的發(fā)展方向來看瞻颂,容器引擎將會越來越成為主流,哪怕不是彈性架構(gòu)郑象,托管到應(yīng)用容器也將是一種趨勢——因為更低的開發(fā)運維和托管成本以及對服務(wù)器的資源的優(yōu)化配置蘸朋。而且未來一個很大的趨勢是——無服務(wù)器計算服務(wù)。

因為相對于軟件扣唱、硬件在本地設(shè)備中的分裂藕坯,云計算的一大特性就是將服務(wù)構(gòu)建在云上,供多種設(shè)備同時無縫調(diào)用噪沙。但事實上炼彪,云服務(wù)在發(fā)展的過程中還沒能實現(xiàn)共融共通的理想——比如,各家的云服務(wù)是相對割裂的正歼,開發(fā)者基于Google云服務(wù)構(gòu)建的軟件拿到亞馬遜的AWS上也許就不能用了辐马,阿里云的應(yīng)用遷移到騰訊云可能就存在問題了;在任務(wù)執(zhí)行層面局义,為防止互相干擾喜爷,云服務(wù)廠商在同一臺服務(wù)器上執(zhí)行多個任務(wù)時也會將它們隔離進行。很明顯萄唇,這樣的實際情況和云服務(wù)的初始理念相去甚遠檩帐。而利用容器技術(shù),軟件可以快速在各類云服務(wù)和基礎(chǔ)設(shè)施上轉(zhuǎn)換另萤。而且湃密,當割裂問題被解決之后,軟件也有望在瞬間獲取大量的計算能力四敞。


而Docker泛源,就是容器引擎中的佼佼者,并且已經(jīng)得到了廣泛的實踐和應(yīng)用忿危。有了Docker之后达箍,軟件的開發(fā)工作將會變得更加容易。比如铺厨,開發(fā)者們在筆記本電腦上寫完一個軟件后缎玫,可以將它轉(zhuǎn)移到云服務(wù)上運行而無需做出更改;無論是自己的服務(wù)器努释、數(shù)據(jù)中心還是Google碘梢、微軟、阿里云的云計算服務(wù)器伐蒂,開發(fā)人員都可以按自己的想法在任何基礎(chǔ)設(shè)施之間轉(zhuǎn)移自己的軟件。這也是未來的一個愿景——機器和基礎(chǔ)設(shè)施是可以互相替代的肛鹏,整個互聯(lián)網(wǎng)就是一個巨大的計算機逸邦。

Docker是如此令人向往和引人深入恩沛,但是在國內(nèi),開發(fā)者普遍遷移到云端基本上也都是只用到了虛擬機等基礎(chǔ)設(shè)施缕减,其實大家都聽說過Docker雷客,但是總是有一道門檻擋在大家面前導(dǎo)致大家無法逾越或者產(chǎn)生了一些偏見:

缺乏完整的系統(tǒng)的教程和實踐,開發(fā)者普遍認為使用Docker很麻煩桥狡,只有大公司能用搅裙,門檻很高;

云端容器服務(wù)產(chǎn)品用戶體驗不夠裹芝,對于初學者門檻太高——這個太高指的是消化這些概念和理念部逮,并且能夠掌握和可控;

對容器服務(wù)的認知還不夠嫂易,對它的好處以及吸引之處還不太了解兄朋;

認為對現(xiàn)有系統(tǒng)、架構(gòu)改造太大怜械,成本太高颅和;

認為Docker只是一種單純的相對先進的技術(shù),并不能給現(xiàn)有的開發(fā)帶來什么改變缕允;


什么是Docker

Docker 是一個開源的應(yīng)用容器引擎峡扩,可以輕松的為任何應(yīng)用創(chuàng)建一個輕量級的、可移植的障本、自給自足的容器有额。開發(fā)者在本地編譯測試通過的容器可以批量地在生產(chǎn)環(huán)境中部署,包括VMs(虛擬機)彼绷、bare metal巍佑、OpenStack 集群和其他的基礎(chǔ)應(yīng)用平臺。

簡單的理解寄悯,Docker類似于集裝箱萤衰,各式各樣的貨物,經(jīng)過集裝箱的標準化進行托管猜旬,而集裝箱和集裝箱之間沒有影響脆栋。也就是說,Docker平臺就是一個軟件集裝箱化平臺洒擦,這就意味著我們自己可以構(gòu)建應(yīng)用程序椿争,將其依賴關(guān)系一起打包到一個容器中,然后這容器就很容易運送到其他的機器上進行運行熟嫩,而且非常易于裝載秦踪、復(fù)制、移除,非常適合軟件彈性架構(gòu)椅邓。

因此柠逞,就像船只、火車或卡車運輸集裝箱而不論其內(nèi)部的貨物一樣景馁,軟件容器充當軟件部署的標準單元板壮,其中可以包含不同的代碼和依賴項。 按照這種方式容器化軟件合住,開發(fā)人員和 IT 專業(yè)人員只需進行極少修改或不修改绰精,即可將其部署到不同的環(huán)境。

總而言之透葛,Docker 是一個開放平臺笨使,使開發(fā)人員和管理員可以在稱為容器的松散隔離的環(huán)境中構(gòu)建鏡像、交付和運行分布式應(yīng)用程序获洲。以便在開發(fā)阱表、QA 和生產(chǎn)環(huán)境之間進行高效的應(yīng)用程序生命周期管理。


Docker和虛擬機的區(qū)別

如上圖所示贡珊,由于容器所需的資源要少得多(例如最爬,它們不需要一個完整的 OS),所以它們易于部署且可快速啟動门岔。這使你能夠具有更高的密度爱致,也就是說,這允許你在同一硬件單元上運行更多服務(wù)寒随,從而降低了成本糠悯。

在同一內(nèi)核上運行的副作用是,你獲得的隔離比 VM 要少。

鏡像的主要目標是使環(huán)境(依賴項)在不同的部署中保持不變。 也就是說胁后,可以在計算機上調(diào)試它,然后將其部署到保證具有相同環(huán)境的另一臺計算機上纫普。

借助容器鏡像,可打包應(yīng)用或服務(wù)并采用可靠且可重現(xiàn)的方式對其進行部署好渠∽蚣冢可以說 Docker 不只是一種技術(shù),還是一種原理和過程拳锚。

在使用Docker之前假栓,我們經(jīng)常會聽到,“這個問題在開發(fā)環(huán)境是正常的霍掺!”匾荆。而在使用 Docker 后拌蜘,你不會聽到開發(fā)人員說:“為什么它能在我的計算機上使用卻不能用在生產(chǎn)中?”棋凳。開發(fā)人員只需說“它在 Docker 上運行”拦坠,因為打包的 Docker 應(yīng)用程序可在任何支持的 Docker 環(huán)境上執(zhí)行连躏,而且它在所有部署目標(例如剩岳,開發(fā)、QA入热、暫存和生產(chǎn))上都按預(yù)期運行拍棕。


基本概念

鏡像:一個特殊的文件系統(tǒng)

操作系統(tǒng)分為內(nèi)核和用戶空間。對于 Linux 而言勺良,內(nèi)核啟動后绰播,會掛載 root 文件系統(tǒng)為其提供用戶空間支持。而 Docker 鏡像(Image)尚困,就相當于是一個 root 文件系統(tǒng)蠢箩。

Docker 鏡像是一個特殊的文件系統(tǒng),除了提供容器運行時所需的程序事甜、庫谬泌、資源、配置等文件外逻谦,還包含了一些為運行時準備的一些配置參數(shù)(如匿名卷掌实、環(huán)境變量、用戶等)邦马。

鏡像不包含任何動態(tài)數(shù)據(jù)贱鼻,其內(nèi)容在構(gòu)建之后也不會被改變。

Docker 設(shè)計時滋将,就充分利用 Union FS 的技術(shù)邻悬,將其設(shè)計為分層存儲的架構(gòu)。 鏡像實際是由多層文件系統(tǒng)聯(lián)合組成随闽。

鏡像構(gòu)建時父丰,會一層層構(gòu)建,前一層是后一層的基礎(chǔ)橱脸。每一層構(gòu)建完就不會再發(fā)生改變础米,后一層上的任何改變只發(fā)生在自己這一層。

比如添诉,刪除前一層文件的操作屁桑,實際不是真的刪除前一層的文件,而是僅在當前層標記為該文件已刪除栏赴。

在最終容器運行的時候蘑斧,雖然不會看到這個文件,但是實際上該文件會一直跟隨鏡像。

因此竖瘾,在構(gòu)建鏡像的時候沟突,需要額外小心,每一層盡量只包含該層需要添加的東西捕传,任何額外的東西應(yīng)該在該層構(gòu)建結(jié)束前清理掉惠拭。

分層存儲的特征還使得鏡像的復(fù)用、定制變的更為容易庸论。甚至可以用之前構(gòu)建好的鏡像作為基礎(chǔ)層职辅,然后進一步添加新的層,以定制自己所需的內(nèi)容聂示,構(gòu)建新的鏡像域携。


容器:鏡像運行時的實體

鏡像(Image)和容器(Container)的關(guān)系,就像是面向?qū)ο蟪绦蛟O(shè)計中的類和實例一樣鱼喉,鏡像是靜態(tài)的定義秀鞭,容器是鏡像運行時的實體。容器可以被創(chuàng)建扛禽、啟動锋边、停止、刪除旋圆、暫停等 宠默。

容器的實質(zhì)是進程,但與直接在宿主執(zhí)行的進程不同灵巧,容器進程運行于屬于自己的獨立的命名空間搀矫。前面講過鏡像使用的是分層存儲,容器也是如此刻肄。

容器存儲層的生存周期和容器一樣瓤球,容器消亡時,容器存儲層也隨之消亡敏弃。因此卦羡,任何保存于容器存儲層的信息都會隨容器刪除而丟失。

按照 Docker 最佳實踐的要求麦到,容器不應(yīng)該向其存儲層內(nèi)寫入任何數(shù)據(jù) 绿饵,容器存儲層要保持無狀態(tài)化。

所有的文件寫入操作瓶颠,都應(yīng)該使用數(shù)據(jù)卷(Volume)拟赊、或者綁定宿主目錄,在這些位置的讀寫會跳過容器存儲層粹淋,直接對宿主(或網(wǎng)絡(luò)存儲)發(fā)生讀寫吸祟,其性能和穩(wěn)定性更高瑟慈。

數(shù)據(jù)卷的生存周期獨立于容器,容器消亡屋匕,數(shù)據(jù)卷不會消亡葛碧。因此, 使用數(shù)據(jù)卷后过吻,容器可以隨意刪除进泼、重新 run,數(shù)據(jù)卻不會丟失疮装。

注意:

容器在整個應(yīng)用程序生命周期工作流中提供以下優(yōu)點:隔離性缘琅、可移植性粘都、靈活性廓推、可伸縮性和可控性。 最重要的優(yōu)點是可在開發(fā)和運營之間提供隔離翩隧。


倉庫:集中存放鏡像文件的地方

鏡像構(gòu)建完成后樊展,可以很容易的在當前宿主上運行,但是堆生, 如果需要在其他服務(wù)器上使用這個鏡像专缠,我們就需要一個集中的存儲、分發(fā)鏡像的服務(wù)淑仆,Docker Registry 就是這樣的服務(wù)涝婉。

一個 Docker Registry 中可以包含多個倉庫(Repository);每個倉庫可以包含多個標簽(Tag)蔗怠;每個標簽對應(yīng)一個鏡像墩弯。

所以說,鏡像倉庫是 Docker 用來集中存放鏡像文件的地方寞射,類似于我們之前常用的代碼倉庫渔工。

通常,一個倉庫會包含同一個軟件不同版本的鏡像桥温,而標簽就常用于對應(yīng)該軟件的各個版本 引矩。

我們可以通過<倉庫名>:<標簽>的格式來指定具體是這個軟件哪個版本的鏡像。如果不給出標簽侵浸,將以 latest 作為默認標簽旺韭。

這里補充一下 Docker Registry 公開服務(wù)和私有 Docker Registry 的概念:

Docker Registry 公開服務(wù)是開放給用戶使用、允許用戶管理鏡像的 Registry 服務(wù)掏觉。

一般這類公開服務(wù)允許用戶免費上傳区端、下載公開的鏡像,并可能提供收費服務(wù)供用戶管理私有鏡像履腋。

最常使用的 Registry 公開服務(wù)是官方的 Docker Hub 珊燎,這也是默認的 Registry惭嚣,并擁有大量的高質(zhì)量的官方鏡像,網(wǎng)址為:hub.docker.com/ 悔政。

在國內(nèi)訪問 Docker Hub 可能會比較慢晚吞,國內(nèi)也有一些云服務(wù)商提供類似于 Docker Hub 的公開服務(wù)。

除了使用公開服務(wù)外谋国,用戶還可以在本地搭建私有 Docker Registry 槽地。Docker 官方提供了 Docker Registry 鏡像,可以直接使用做為私有 Registry 服務(wù)芦瘾。


開源的 Docker Registry 鏡像只提供了 Docker Registry API 的服務(wù)端實現(xiàn)捌蚊,足以支持 Docker 命令,不影響使用近弟。但不包含圖形界面缅糟,以及鏡像維護、用戶管理祷愉、訪問控制等高級功能窗宦。


Docker的主要應(yīng)用場景

簡化配置

虛擬機的最大好處是能在你的硬件設(shè)施上運行各種配置不一樣的平臺(軟件、系統(tǒng))二鳄,Docker在降低額外開銷的情況下提供了同樣的功能赴涵。它能讓你將運行環(huán)境和配置放在代碼中然后部署,同一個Docker的配置可以在不同的環(huán)境中使用订讼,這樣就降低了硬件要求和應(yīng)用環(huán)境之間耦合度髓窜。


簡單的來說,容器鏡像打包完成后欺殿,它就是個獨立的個體了寄纵,丟到哪里都能跑,而無需針對各個平臺去獨立配置祈餐。


代碼流水線(Code Pipeline)管理

前一個場景對于管理代碼的流水線起到了很大的幫助擂啥。代碼從開發(fā)者的機器到最終在生產(chǎn)環(huán)境上的部署,需要經(jīng)過很多的中間環(huán)境帆阳。而每一個中間環(huán)境都有自己微小的差別哺壶,Docker給應(yīng)用提供了一個從開發(fā)到上線均一致的環(huán)境,讓代碼的流水線變得簡單不少蜒谤。


提高開發(fā)效率

不同的開發(fā)環(huán)境中山宾,我們都想把兩件事做好。一是我們想讓開發(fā)環(huán)境盡量貼近生產(chǎn)環(huán)境鳍徽,二是我們想快速搭建開發(fā)環(huán)境资锰。


使用Docker非常簡單的就能夠?qū)崿F(xiàn)這兩點,而且哪怕是開發(fā)環(huán)境的機器配置一般的情況下搭建多個生成服務(wù)應(yīng)用阶祭。一臺一般配置服務(wù)器或開發(fā)機也能輕松的跑起多個Docker應(yīng)用绷杜,而無需額外增加機器配置直秆。因為Docker有個非常NB的特性,擁有虛擬化的特性鞭盟,而幾乎沒有額外的開銷圾结。



隔離應(yīng)用

很多情況下,我們需要在一臺服務(wù)器上運行多個不同的應(yīng)用齿诉,比如上面提到的提高開發(fā)效率的場景等筝野。


我們經(jīng)常需要考慮三點,一是因為要降低成本而進行服務(wù)器整合粤剧,二是將一個整體式的應(yīng)用拆分成松耦合的單個服務(wù)(比如微服務(wù)架構(gòu))歇竟,三是還需要考慮應(yīng)用之間的兼容性。而對于Docker來說抵恋,支持起來就非常簡單了焕议。同一臺機器,我可以同時運行N個Docker web應(yīng)用馋记,托管到不同的Web服務(wù)器(Kestrel号坡、Ngnix、Tomcat)梯醒,而無需擔心他們會搞起3Q大戰(zhàn),也無需擔心我的開發(fā)機器會跑不起來腌紧。


整合服務(wù)器

正如通過虛擬機來整合多個應(yīng)用茸习,Docker隔離應(yīng)用的能力使得Docker可以整合多個服務(wù)器以降低成本。由于沒有多個操作系統(tǒng)的內(nèi)存占用壁肋,以及能在多個實例之間共享沒有使用的內(nèi)存号胚,Docker可以比虛擬機提供更好的服務(wù)器整合解決方案。


這就意味著資源得到更有效的利用——可以做更多衣服浸遗,而且還沒有邊角料猫胁,成本還更低。


調(diào)試能力

Docker提供了很多的工具跛锌,這些工具不一定只是針對容器弃秆,但是卻適用于容器。它們提供了很多的功能髓帽,包括可以為容器設(shè)置檢查點菠赚、設(shè)置版本和查看兩個容器之間的差別,這些特性可以幫助調(diào)試Bug郑藏。


多租戶環(huán)境

在多租戶的應(yīng)用中衡查,它可以避免關(guān)鍵應(yīng)用的重寫。比如IoT(物聯(lián)網(wǎng))的應(yīng)用中必盖,開發(fā)一個快速拌牲、易用的多租戶環(huán)境俱饿。這種多租戶的基本代碼非常復(fù)雜,很難處理塌忽,重新規(guī)劃這樣一個應(yīng)用不但消耗時間稍途,也浪費金錢。


使用Docker砚婆,可以為每一個租戶的應(yīng)用層的多個實例創(chuàng)建隔離的環(huán)境械拍,這不僅簡單而且成本低廉,當然這一切得益于Docker環(huán)境的啟動速度和其高效的diff命令装盯。


就如同我們現(xiàn)在寫了一個不支持多租戶的業(yè)務(wù)程序坷虑,而實際的業(yè)務(wù)中經(jīng)常會出現(xiàn)需要支持多租戶或者有新客戶需要使用的場景,這是我們通常的簡單做法是——部署一套新的代碼埂奈。當站點達到一定量的適合迄损,要么重寫程序,要么維護人員Game over账磺。


快速部署

在虛擬機之前芹敌,引入新的硬件資源需要消耗幾天的時間。虛擬化技術(shù)(Virtualization)將這個時間縮短到了分鐘級別垮抗。而Docker通過為進程僅僅創(chuàng)建一個容器而無需啟動一個操作系統(tǒng)氏捞,再次將這個過程縮短到了秒級。


你可以在服務(wù)器中或云端創(chuàng)建銷毀資源而無需擔心重新啟動帶來的開銷冒版。通常情況下液茎,服務(wù)器的資源利用率只有30%,而通過使用Docker并進行有效的資源分配可以提高資源的利用率辞嗡。


市場實際反饋和調(diào)查

我們來看一份2016年用戶調(diào)查結(jié)果捆等。

Docker為軟件供應(yīng)鏈提供了應(yīng)用程序開發(fā)的敏捷性,可控性和可移值性


- 用戶如何使用 Docker续室?

90% 的用戶使用 Docker 進行應(yīng)用開發(fā)

65%?的用戶使用 Docker 進行敏捷開發(fā)

58%?的用戶將 Docker 用于生產(chǎn)

48%?的用戶使用 Docker 控制應(yīng)用環(huán)境

41%?的用戶使用 Docker 實現(xiàn)應(yīng)用的可移植性?

?- Docker?的業(yè)務(wù)覆蓋:

78%:網(wǎng)頁應(yīng)用

75%:網(wǎng)頁?API

70%:應(yīng)用服務(wù)端

42%:傳統(tǒng)數(shù)據(jù)庫

27%:分布式數(shù)據(jù)庫

13%:大數(shù)據(jù)

Docker 帶來的敏捷性(響應(yīng)速度和靈活性)吸引了越來越多的開發(fā)者栋烤。他們不僅能知道容器內(nèi)部到底跑了什么,也能進一步理解 Docker 如何加速了軟件開發(fā)進程挺狰。另外明郭,41% 的用戶表示應(yīng)用的可移植性是他們決定使用 Docker 的關(guān)鍵因素。


通過?DevOps?的實踐她渴,Docker?正在給應(yīng)用交付帶來很多可以量化的提升

如圖所示:

93% 的?Docker 用戶已經(jīng)在開發(fā)過程中獲得了益處

85% 的?Docker?用戶已經(jīng)在運維過程中獲得了益處

57% 的 Docker 用戶見證了運維環(huán)境管理的提升

45% 的?Docker 用戶已經(jīng)提高了軟件發(fā)布的頻率

大約一半的受訪者表示已經(jīng)采用了持續(xù)集成(CI)和 DevOps达址,并且希望把這些實戰(zhàn)經(jīng)驗應(yīng)用到生產(chǎn)環(huán)境的持續(xù)交付中。剩下的受訪者則準備盡快跟上步伐趁耗,盡快嘗試 DevOps 和持續(xù)集成沉唠。另外,據(jù)調(diào)查顯示苛败,用戶使用?Docker 發(fā)布應(yīng)用的頻率平均提升了 13 倍满葛。


Docker 對混合云策略至關(guān)重要径簿,它使得用戶可以根據(jù)需求自由選擇私有和公有環(huán)境

如圖所示:

80%?的用戶表示?Docker 已經(jīng)是云策略的一部分

60%?的用戶則正在計劃使用?Docker?將業(yè)務(wù)遷移到云端。

41%?的用戶希望實現(xiàn)跨環(huán)境的應(yīng)用移植

35+%?的用戶希望避免被云供應(yīng)商綁定

通過容器來交付的應(yīng)用可以在任何基礎(chǔ)設(shè)施之上靈活遷移嘀韧,同時這些基礎(chǔ)設(shè)施又可以提供不同層次的應(yīng)用管理方式篇亭,而當業(yè)務(wù)在多個服務(wù)供應(yīng)商之中尋求混合云或全云模式時,又可以完美避免被平臺捆綁锄贷。


對于按需部署或部署到云環(huán)境译蒂,Docker 提供了獨一無二的選擇。 80% 的用戶表示 Docker 已經(jīng)成為他們云策略的一部分谊却,超過 35% 的用戶使用 Docker 來避免被云服務(wù)供應(yīng)商綁定柔昼。


Docker 實現(xiàn)了微服務(wù)架構(gòu),也讓遺留的單體應(yīng)用轉(zhuǎn)變?yōu)楝F(xiàn)代應(yīng)用

如圖所示:

65%?的組織面對遺留應(yīng)用這一難題

59%?的組織受到遺留應(yīng)用和基礎(chǔ)設(shè)施僵化的影響

44%?的組織正在使用微服務(wù)架構(gòu)

39%?的組織讓遺留應(yīng)用煥發(fā)新生

Docker 使得微服務(wù)架構(gòu)的快速發(fā)展成為可能炎辨,同時它也將傳統(tǒng)的業(yè)務(wù)遷移到容器環(huán)境中捕透,以此使得應(yīng)用程序變得更加可移植。使用微服務(wù)架構(gòu)進行交付是 Docker 的關(guān)鍵優(yōu)勢碴萧!


Docker改變了什么乙嘀?

綜上所述,Docker到底改變了什么破喻?筆者是這么理解的:

Docker改變了云服務(wù)虎谢,使云服務(wù)的共融共通的理想逐步成為了可能。并且Docker 已經(jīng)是云策略的一部分低缩,許多開發(fā)者正在計劃使用 Docker 將業(yè)務(wù)遷移到云端嘉冒。另外,為了避免被云服務(wù)供應(yīng)商綁定咆繁,Docker成為很多開發(fā)者的首選。

Docker改變了產(chǎn)品交付顶籽,為產(chǎn)品的整個生命周期提供了一整套的解決方案和流程玩般。

Docker改變了開發(fā)方式,提供了簡化的環(huán)境配置礼饱、封裝的運行環(huán)境以及統(tǒng)一的環(huán)境坏为。并且提供了快速部署的方式。

Docker改變了測試镊绪,多版本測試變得極為方便匀伏,快速構(gòu)建測試環(huán)境也變得更加簡單并且無需開發(fā)人員干預(yù)或者搭建。

Docker改變了運維蝴韭,環(huán)境的一致性讓運維變得更加簡單够颠,同時熱更新的支持讓運維不再需要半夜加班部署更新,更新可以隨時進行榄鉴。當出現(xiàn)重大問題時履磨,還能快速回滾到指定版本蛉抓。

Docker改變了架構(gòu),自動化擴容支持讓架構(gòu)變得更加簡單剃诅,分布式系統(tǒng)也更加易于搭建和支持巷送。同時遺留的單體應(yīng)用也很易于轉(zhuǎn)變?yōu)楝F(xiàn)代應(yīng)用。

總之矛辕,在某種程度上笑跛,Docker改變了產(chǎn)品開發(fā)中的一些游戲規(guī)則。雖然Docker是一項技術(shù)聊品,但是它也帶來了新的思維飞蹂,新的流程和工作方法,Docker在推動行業(yè)的發(fā)展杨刨,Docker已經(jīng)在改變世界晤柄,并且在逐步的變?yōu)槭聦崱?/p>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市妖胀,隨后出現(xiàn)的幾起案子芥颈,更是在濱河造成了極大的恐慌,老刑警劉巖赚抡,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件爬坑,死亡現(xiàn)場離奇詭異,居然都是意外死亡涂臣,警方通過查閱死者的電腦和手機盾计,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赁遗,“玉大人署辉,你說我怎么就攤上這事⊙宜模” “怎么了哭尝?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長剖煌。 經(jīng)常有香客問我材鹦,道長,這世上最難降的妖魔是什么耕姊? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任桶唐,我火速辦了婚禮,結(jié)果婚禮上茉兰,老公的妹妹穿的比我還像新娘尤泽。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布安吁。 她就那樣靜靜地躺著醉蚁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鬼店。 梳的紋絲不亂的頭發(fā)上网棍,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機與錄音妇智,去河邊找鬼滥玷。 笑死,一個胖子當著我的面吹牛巍棱,可吹牛的內(nèi)容都是我干的惑畴。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼航徙,長吁一口氣:“原來是場噩夢啊……” “哼如贷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起到踏,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤杠袱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后窝稿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體楣富,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年伴榔,在試婚紗的時候發(fā)現(xiàn)自己被綠了纹蝴。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡踪少,死狀恐怖塘安,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情援奢,我是刑警寧澤耙旦,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站萝究,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏锉罐。R本人自食惡果不足惜帆竹,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望脓规。 院中可真熱鬧栽连,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至熔恢,卻和暖如春脐湾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背叙淌。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工秤掌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鹰霍。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓闻鉴,卻偏偏與公主長得像,于是被迫代替她去往敵國和親茂洒。 傳聞我的和親對象是個殘疾皇子孟岛,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容