溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何理解docker

發(fā)布時間:2021-10-20 15:16:59 來源:億速云 閱讀:149 作者:柒染 欄目:大數(shù)據(jù)

這篇文章給大家介紹如何理解docker,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

    隨著用戶的需求越來越多樣,系統(tǒng)的規(guī)模越來越龐大,運行的軟件越來越復雜,環(huán)境配置問題所造成的的麻煩也層出不窮等等,為了解決這些問題,開源社區(qū)推出過不少優(yōu)秀的工具。這些工具雖然在某些程度上確實能解決部分問題,但是始終沒有一種方案能帶來“一勞永逸”的效果。

    伴隨著信息技術(shù)的飛速發(fā)展,虛擬化的概念早已經(jīng)廣泛應用到各種關鍵場景中。從20世紀60年代IBM推出的大型主機虛擬化,到后來以Xen、KVM為代表的虛擬機虛擬化,在到現(xiàn)在以Docker為代表的容器技術(shù),虛擬化技術(shù)自身也在不斷進行創(chuàng)新和突破。傳統(tǒng)來看,虛擬化既可以通過硬件模擬來實現(xiàn),也可以通過操作系統(tǒng)軟件來實現(xiàn)。而容器技術(shù)則更為優(yōu)雅,它充分利用了操作系統(tǒng)本身已有的機制和特性,可以實現(xiàn)遠超傳統(tǒng)虛擬機的輕量級虛擬化。Docker正式眾多容器技術(shù)中的佼佼者。

    Docker的構(gòu)想是要實現(xiàn)“Build,Ship and Run Any App, Anywhere”。可以實現(xiàn)通過對應用的封裝(Packaging)、分發(fā)(Distribution)、部署(Deployment)、運行(Runtime)生命周期進行管理,達到應用組件級別的“一次封裝,處處運行”。這里的應用組件,既可以是一個Web應用、一個變異環(huán)境、也可以使一套數(shù)據(jù)庫平臺服務,甚至一個操作系統(tǒng)或集群。

    此外,現(xiàn)在主流的操作系統(tǒng)包括Linux各大的發(fā)行版、macOS、Windows等都已經(jīng)支持Docker。例如,Redhat RHEL6.5/CentOS 6.5、Ubuntu 16.04以及更新的版本,都已經(jīng)在官方軟件源中默認帶有Docker軟件包。此外,各大云服務提供商也紛紛退出了基于Docker的服務。種種跡象表明Docker已經(jīng)是一個非常成熟的虛擬化技術(shù)了。

    基于Linux平臺上的多項開源技術(shù),Docker提供了高效、敏捷和輕量級的容器方案,并支持部署到本地環(huán)境和多種主流云平臺。可以說,Docker首次為應用的開發(fā)、運行和部署提供了“一站式”的使用解決方案。

    Docker提供了各種容器管理工具(如分發(fā)、版本、移植等),讓用戶無須關注底層的操作,更加簡單明了的管理和使用容器;其次,Docker通過引入分層文件系統(tǒng)構(gòu)建和高效的鏡像機制,降低了遷移難度,極大地改善了用戶體驗。用戶操作Docker容器就像操作應用自身一樣簡單。

    早期的Docker代碼實現(xiàn)是直接基于LXC的。自0.9版本開始,Docker開發(fā)了libcontainer項目作為更廣泛的容器驅(qū)動實現(xiàn),從而替換掉了LXC的實現(xiàn)。簡單的講,讀者可以將Docker容器理解為一種輕量級的沙盒(sandbox)。每個容器內(nèi)運行著一個應用,不同的容器相互隔離,容器之間也可以通過網(wǎng)絡互相通信。容器的創(chuàng)建和停止十分快速,幾乎跟創(chuàng)建和終止原生應用一致;另外,容器自身對系統(tǒng)資源的額外需求也十分有限,遠遠低于傳統(tǒng)虛擬機。很多時候,甚至直接把容器當做應用本身也沒有任何問題。

    在云時代,開發(fā)者創(chuàng)建的應用必須要能很方便地在網(wǎng)絡上傳播,也就是說應用必須脫離底層物理硬件的顯示;同時必須是“任何時間任何地點”可獲取的。因此開發(fā)者們需要一種新型的創(chuàng)建分布式應用程序的方式,快速分發(fā)和部署,而這正是Docker所能夠提供的最大優(yōu)勢。

    舉個簡單的例子,假設用戶試圖基于最常見的LAMP(Linux+Apache+MySQL+PHP)組合來構(gòu)建網(wǎng)站。按照傳統(tǒng)的做法,首先需要安裝Apache、MySQL和PHP以及他們各自運行所依賴的環(huán)境;之后分別對他們進行配置(包括創(chuàng)建合適的用戶、配置參數(shù)等);經(jīng)過大量的操作后,還需要進行功能測試,看是否工作正常;如果不正常,則進行功能測試,看是否功能正常;如果不正常,則進行調(diào)試追蹤,意味著更多的時間代價和不可控的風險??梢韵胂耄绻麘脭?shù)目變多,事情會變得更加難以處理。

    更可怕的是,一旦需要服務器遷移(例如從亞馬遜遷移到其他云)往往需要對每個應用都進行重新部署和調(diào)試。這些瑣碎而無趣的“體力活”,極大地降低了用戶的工作效率。就起更遠,是這些應用直接運行在底層操作系統(tǒng)上,無法保證同一份應用在不同的環(huán)境中行為一致。

    而Docker提供了一種更為聰明的方式,通過容器來打包應用、解耦應用和運行平臺。這意味著遷移的時候,只需要在新的服務器上啟動需要的容器就可以了,無論新舊服務器時候是同一類型的平臺。這無意將幫助我們節(jié)約大量的寶貴時間,并降低部署過程中出現(xiàn)問題的風險。

Docker在開發(fā)和運維中的優(yōu)勢

    對開發(fā)和運維(DevOps)人員來說,最夢寐以求的效果可能就是依次創(chuàng)建或配置,之后可以在任意地方、任意時間讓應用正常運行,而Docker恰恰是可以實現(xiàn)這一終極目標的“瑞士軍刀”。具體說來,在開發(fā)和運維過程中,Docker具有如下幾個方面的優(yōu)勢:

  1. 更快速的交付和部署。使用Docker,開發(fā)人員可以使用鏡像來快速構(gòu)建一套標準的開發(fā)環(huán)境;開發(fā)完成之后,測試人員和運維人員可以直接使用完全相同的環(huán)境來部署代碼。只要是開發(fā)測試過的代碼,就可以確保在生產(chǎn)環(huán)境無縫運行。Docker可以快速創(chuàng)建和刪除容器,實現(xiàn)快速迭代,節(jié)約開發(fā)、測試、部署的大量時間。并且,整個過程全程可見,是團隊更容易理解應用的創(chuàng)建和過程。

  2. 更高效的資源利用。運行Docker容器不需要額外的虛擬化管理程序(Virtual Machine Manager,VMM,以及Hypervisor)的支持,Docker是內(nèi)核級的虛擬化,可以實現(xiàn)更高的性能,同時對資源的額外需求很低。與傳統(tǒng)虛擬機方式相比,Docker的性能要提高1~2個數(shù)量級。

  3. 更輕松的遷移和擴展。Docker容器幾乎可以在任意的平臺上運行,高闊物理機、虛擬機、公有云、私有云、個人電腦、服務器等,同時支持主流的操作系統(tǒng)發(fā)行版本。這種兼容性讓用戶可以在不同平臺之間輕松地遷移應用。

  4. 更簡單的更新管理。使用Dockerfile,只需要小小的配置修改,就可以替代以往大量的更新工作。所有修改都以增量的方式被分發(fā)和更新,從而實現(xiàn)自動化并且高效的容器管理。

如何理解docker

關于如何理解docker就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI