国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Docker與VM虛擬機的區(qū)別以及Docker的特點

這篇具有很好參考價值的文章主要介紹了Docker與VM虛擬機的區(qū)別以及Docker的特點。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

01 本質上的區(qū)別

docker和vmware區(qū)別,程序員,IT,程序人生,單元測試,軟件測試,自動化測試,測試用例,程序人生

VM(VMware)在宿主機器、宿主機器操作系統(tǒng)的基礎上創(chuàng)建虛擬層、虛擬化的操作系統(tǒng)、虛擬化的倉庫,然后再安裝應用;

Container(Docker容器),在宿主機器、宿主機器操作系統(tǒng)上創(chuàng)建Docker引擎,在引擎的基礎上再安裝應用。

那么問題來了,沒有操作系統(tǒng),怎么運行程序?

  • 可以在Docker中創(chuàng)建一個ubuntu的鏡像文件,這樣就能將ubuntu系統(tǒng)集成到Docker中,運行的應用就都是ubuntu的應用。

02 使用上的區(qū)別

docker和vmware區(qū)別,程序員,IT,程序人生,單元測試,軟件測試,自動化測試,測試用例,程序人生

Size

  • 虛擬機中ubuntu所占內存:

docker和vmware區(qū)別,程序員,IT,程序人生,單元測試,軟件測試,自動化測試,測試用例,程序人生

  • Docker容器中ubuntu鏡像文件所占內存:

docker和vmware區(qū)別,程序員,IT,程序人生,單元測試,軟件測試,自動化測試,測試用例,程序人生

01 Startup

Docker在宿主機器的操作系統(tǒng)上創(chuàng)建Docker引擎,直接在宿主主機的操作系統(tǒng)上調用硬件資源,而不是虛擬化操作系統(tǒng)和硬件資源,所以操作速度快。

這個其實安裝一個ubuntu的虛擬機和拉取一個Docker的ubuntu鏡像文件,運行一下就知道了,區(qū)別很明顯,虛擬機開一下大概得2分多鐘,而Docker只需要2秒鐘。

02 Integration

首先,Docker可以讓你非常容易和方便地以“容器化”的方式去部署應用。它就像集裝箱一樣,打包了所有依賴,再在其他服務器上部署很容易,不至于換服務器后發(fā)現(xiàn)各種配置文件散落一地,這樣就解決了編譯時依賴和運行時依賴的問題。

其次,Docker的隔離性使得應用在運行時就像處于沙箱中,每個應用都認為自己是在系統(tǒng)中唯一運行的程序,就像剛才例子中,A依賴于python 2.7,同時A還依賴于B,但B卻依賴于Python 3,這樣我們可以在系統(tǒng)中部署一個基于Python 2.7的容器和一個基于Python 3的容器,這樣就可以很方便地在系統(tǒng)中部署多種不同環(huán)境來解決依賴復雜度的問題。這里有些朋友可能會說,虛擬機也可以解決這樣的問題。誠然,虛擬化確實可以做到這一點,但是這需要硬件支持虛擬化及開啟BIOS中虛擬化相關的功能,同時還需要在系統(tǒng)中安裝兩套操作系統(tǒng),虛擬機的出現(xiàn)是解決了操作系統(tǒng)和物理機的強耦合問題。但Docker就輕量化很多,只需內核支持,無需硬件和BIOS的強制要求,可以輕松迅速地在系統(tǒng)上部署多套不同容器環(huán)境,容器的出現(xiàn)解決了應用和操作系統(tǒng)的強耦合問題。

正因為Docker是以應用為中心,鏡像中打包了應用及應用所需的環(huán)境,一次構建,處處運行。這種特性完美解決了傳統(tǒng)模式下應用遷移后面臨的環(huán)境不一致問題。同時,Docker壓根不管內部應用怎么啟動,你自己愛咋來咋來,我們用docker start或run作為統(tǒng)一標準。這樣應用啟動就標準化了,不需要再根據(jù)不同應用而記憶一大串不同啟動命令。

基于Docker的特征,現(xiàn)在常見的利用Docker進行持續(xù)集成的流程如下:

  • 開發(fā)者提交代碼

  • 觸發(fā)鏡像構建

  • 構建鏡像上傳至私有倉庫

  • 鏡像下載至執(zhí)行機器

  • 鏡像運行

其基本拓撲結構如圖1所示

docker和vmware區(qū)別,程序員,IT,程序人生,單元測試,軟件測試,自動化測試,測試用例,程序人生

熟悉Docker的朋友都知道,Docker啟動非??欤梢哉f是秒啟。在上述的五步中,1和5的耗時較短,整個持續(xù)集成主要耗時集中在中間的3個步驟,也就是docker build、docker push、docekr pull這樣還是無法達到順滑的極致要求,下來我們來分析下build、push、pull的耗時和解決方法:

03 docker build??

  • 網(wǎng)絡優(yōu)化

dockerhub的官方鏡像在國外,由于眾所周知的原因,在國內進行構建時網(wǎng)絡會是很大的瓶頸,甚至某些公司的環(huán)境是無Internet連接的。

在這種情況下,建議使用國內的鏡像源,或者自己搭建私有倉庫,保存項目需要的基礎鏡像,把構建過程中的網(wǎng)絡傳輸都控制在國內或者內網(wǎng),這樣就不用再考慮網(wǎng)絡方面的問題。

docker和vmware區(qū)別,程序員,IT,程序人生,單元測試,軟件測試,自動化測試,測試用例,程序人生

  • 使用 .dockerignore文件

dockerignore文件的設計是為了在docker build的過程中排除不需要用到的文件以及目錄,目的是為了docker build這個過程可以盡可能地快速高效以及構建出來的image沒有多余的“垃圾”。

  • 最小化鏡像層數(shù)(layers)

把鏡像層數(shù)減到最少,能加快容器的啟動速度,但是這里也要權衡另一個問題:dockerfile的可讀性。你可以把一個dockerfile寫得很復雜以達到構建出最小層數(shù)的鏡像,但同時你的dockerfile可讀性也降低了。所以我們要在鏡像層數(shù)和dockerfile可讀性之間做出妥協(xié)。

04 docker push

docker registry升級到v2后加入了很多安全相關檢查,在v2中的鏡像的存儲格式變成了gzip ,鏡像在壓縮過程中占用的時間也比較多。我們簡單分解一下docker push的流程。

buffer to disk,將該層文件系統(tǒng)壓縮成本地的一個臨時文件;

  • 上傳文件至registry;

  • 本地計算壓縮包digest,刪除臨時文件,digest傳給registry;

  • registry計算上傳壓縮包digest并進行校驗;

  • registry將壓縮包傳輸至后端存儲文件系統(tǒng);

  • 重復1-5直至所有層傳輸完畢;

計算鏡像的manifest并上傳至registry重復 3-5。

這樣的設計導致push會很慢,如果采用官方的dockerhub,需要考慮docker build一節(jié)中提及的網(wǎng)絡方面影響,dockerhub公有鏡像庫還需考慮安全方面的因素。

同時docker和registry設置了過多的安全防范措施(如雙向證書認證等),主要是為了防止在公有云的環(huán)境下鏡像的偽造和越權獲取。但是在一個可信的環(huán)境內,如果build和push過程都是自己掌控,很多措施都是多余的。

05 docker pull

docker pull 鏡像的速度對服務啟動速度至關重要,好在registry v2后可以并行pull了,速度有了很大改善。但是依然有一些小的問題影響了啟動的速度:

下載鏡像和解壓鏡像是串行的;

串行解壓,由于v2都是gzip要解壓,盡管并行下載了還是串行解壓,內網(wǎng)的話解壓時間比網(wǎng)絡傳輸都要長;

和registry通信, registry在pull的過程中并不提供下載內容只是提供下載url和鑒權,這一部分加長了網(wǎng)絡傳輸,而且一些metadata還是要去后端存儲獲取,延時還是有一些的。

docker和vmware區(qū)別,程序員,IT,程序人生,單元測試,軟件測試,自動化測試,測試用例,程序人生

通過剛才的分析,大家可以看到,其實docker build、push、pull其實主要耗時是在網(wǎng)絡傳輸(主要)及安全防范措施(輕微)上,整個傳輸過程甚至大大超過了其他所有步驟的時間;這樣可以借助我們的AppHouse方便的搭建本地企業(yè)級鏡像倉庫,將網(wǎng)絡傳輸轉移至內網(wǎng),同時完全掌控了 build、push和pull的過程,這樣提高效率的同時也解決了安全問題,可謂一舉兩得。

經(jīng)過Docker、AppHouse的幫助,我們距極致追求的如絲般順滑的持續(xù)集成目標只有一步之遙,Docker解決了依賴和環(huán)境問題,AppHouse解決了鏡像安全快速傳輸?shù)膯栴},接下來就是容器的部署和管理問題。

Docker實現(xiàn)了底層技術的創(chuàng)新,它的出現(xiàn)將開發(fā)者從與系統(tǒng)的糾纏中釋放了出來,但是阻礙企業(yè)使用Docker的問題是容器的大規(guī)模部署、管理問題和缺少企業(yè)級容器工具及系統(tǒng)。

鏡像創(chuàng)建完成后,需要把它發(fā)布到測試和生產(chǎn)環(huán)境。因為Docker占用資源小,在單個服務器上部署成百上千個容器也不足為奇。這個階段中如何更合理地使用Docker也是一個難點,開發(fā)團隊需要考慮如何打造一個可伸縮擴展的分發(fā)環(huán)境。

AppSoar提供人性化的Web管理界面,豐富的Compose文件格式和功能完備的API接口,通過Compose實現(xiàn)以十分簡單的文件描述復雜的應用結構,讓部署變得更簡單。并且,AppSoar還提供豐富的企業(yè)應用商店,讓一鍵創(chuàng)建服務成為可能。這樣可以快速搭建應用場景,開發(fā)者只需要關注開發(fā)本身即可。

打通最后一個環(huán)節(jié)后,整個持續(xù)集成平臺架構演進到如圖2所示。

docker和vmware區(qū)別,程序員,IT,程序人生,單元測試,軟件測試,自動化測試,測試用例,程序人生

03 Docker特點

  • 上手快

用戶只需要幾分鐘,就可以把自己的程序“Docker 化”。Docker 依賴于“寫時復制” (copy-on-write)模型,使修改應用程序也非常迅速,可以說達到“隨心所致,代碼即改” 的境界。

隨后,就可以創(chuàng)建容器來運行應用程序了。大多數(shù) Docker 容器只需要不到 1 秒中即可 啟動。由于去除了管理程序的開銷,Docker 容器擁有很高的性能,同時同一臺宿主機中也可以運行更多的容器,使用戶盡可能的充分利用系統(tǒng)資源。

  • 職責的邏輯分類

使用 Docker,開發(fā)人員只需要關心容器中運行的應用程序,而運維人員只需要關心如何管理容器。Docker設計的目的就是要加強開發(fā)人員寫代碼的開發(fā)環(huán)境與應用程序要部署的生產(chǎn)環(huán)境一致性。從而降低那種“開發(fā)時一切正常,肯定是運維的問題(測試環(huán)境都是正 常的,上線后出了問題就歸結為肯定是運維的問題)”

  • 快速高效的開發(fā)生命周期

Docker 的目標之一就是縮短代碼從開發(fā)、測試到部署、上線運行的周期,讓你的應用程序具備可移植性,易于構建,并易于協(xié)作。(通俗一點說,Docker 就像一個盒子,里面可以裝很多物件,如果需要這些物件的可以直接將該大盒子拿走,而不需要從該盒子中一件 件的取。)

  • 鼓勵使用面向服務的架構

Docker 還鼓勵面向服務的體系結構和微服務架構。Docker 推薦單個容器只運行一個應用程序或進程,這樣就形成了一個分布式的應用程序模型,在這種模型下,應用程序或者服務都可以表示為一系列內部互聯(lián)的容器,從而使分布式部署應用程序,擴展或調試應用程序 都變得非常簡單,同時也提高了程序的內省性。(當然,可以在一個容器中運行多個應用程序)

最后:?下方這份完整的軟件測試視頻學習教程已經(jīng)整理上傳完成,朋友們如果需要可以自行免費領取【保證100%免費】

docker和vmware區(qū)別,程序員,IT,程序人生,單元測試,軟件測試,自動化測試,測試用例,程序人生

?這些資料,對于【軟件測試】的朋友來說應該是最全面最完整的備戰(zhàn)倉庫,這個倉庫也陪伴上萬個測試工程師們走過最艱難的路程,希望也能幫助到你!

docker和vmware區(qū)別,程序員,IT,程序人生,單元測試,軟件測試,自動化測試,測試用例,程序人生文章來源地址http://www.zghlxwxcb.cn/news/detail-806290.html

到了這里,關于Docker與VM虛擬機的區(qū)別以及Docker的特點的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【Linux】安裝VMWare虛擬機(安裝配置)和配置Windows Server 2012 R2(安裝配置連接vm虛擬機)以及環(huán)境配置(Windows版詳細教程)

    【Linux】安裝VMWare虛擬機(安裝配置)和配置Windows Server 2012 R2(安裝配置連接vm虛擬機)以及環(huán)境配置(Windows版詳細教程)

    目錄 一、操作系統(tǒng)簡介 1、什么是操作系統(tǒng) 2、常見的操作系統(tǒng) 2.1、windows操作系統(tǒng) 2.2、UNIX操作系統(tǒng) 2.3、linux操作系統(tǒng) 2.4、mac操作系統(tǒng) 2.5、嵌入式操作系統(tǒng) 3、個人版本和服務器版本的區(qū)別 3.1、個人版本 3.2、服務器版本 3.3、總結 4、Linux的各個版本 4.1、Debian 4.2、Ubuntu 4.3、

    2024年02月07日
    瀏覽(42)
  • 【服務器】安裝VMWare虛擬機(安裝配置)和配置Windows Server 2012 R2(安裝配置連接vm虛擬機)以及環(huán)境配置(Windows版詳細教程)

    【服務器】安裝VMWare虛擬機(安裝配置)和配置Windows Server 2012 R2(安裝配置連接vm虛擬機)以及環(huán)境配置(Windows版詳細教程)

    目錄 一、操作系統(tǒng)簡介 1、什么是操作系統(tǒng) 2、常見的操作系統(tǒng) 2.1、windows操作系統(tǒng) 2.2、UNIX操作系統(tǒng) 2.3、linux操作系統(tǒng) 2.4、mac操作系統(tǒng) 2.5、嵌入式操作系統(tǒng) 3、個人版本和服務器版本的區(qū)別 3.1、個人版本 3.2、服務器版本 3.3、總結 4、Linux的各個版本 4.1、Debian 4.2、Ubuntu 4.3、

    2024年02月06日
    瀏覽(33)
  • 一文詳解Docker與虛擬機的不同

    一文詳解Docker與虛擬機的不同

    Docker 是基于 Linux 內核的 cgroup,namespace,以及 AUFS 類的 Union FS 等技術,對進程進行封裝隔離,屬于操作系統(tǒng)層面的虛擬化技術。 由于隔離的進程獨立于宿主和其它的隔離的進程,因此也稱其為容器。最初實現(xiàn)是基于 LXC,從 0.7 版本以后開始去除 LXC,轉而使用自行開發(fā)的 li

    2024年04月28日
    瀏覽(19)
  • 關于用WinHex解析vm虛擬機的.vmdk文件。

    目錄 前言: 說明: 正文: 1:淺講一番 方法1: 方法二:

    2023年04月09日
    瀏覽(25)
  • 【Docker】Docker容器與虛擬機的對比、三要素、架構和鏡像加速器的詳細講解

    【Docker】Docker容器與虛擬機的對比、三要素、架構和鏡像加速器的詳細講解

    ??歡迎來到本文?? ??個人簡介:陳童學哦,目前學習C/C++、算法、Python、Java等方向,一個正在慢慢前行的普通人。 ??系列專欄:陳童學的日記 ??其他專欄:C++STL,感興趣的小伙伴可以看看。 ??希望各位→點贊?? + 收藏?? + 留言?? ? ??萬物從心起,心動則萬物動??

    2024年02月15日
    瀏覽(22)
  • 【Docker】Docker中Linux 容器、網(wǎng)絡虛擬化與虛擬局域網(wǎng)的技術特點詳細講解

    【Docker】Docker中Linux 容器、網(wǎng)絡虛擬化與虛擬局域網(wǎng)的技術特點詳細講解

    前言 Docker 是一個 開源的應用容器引擎 ,讓開發(fā)者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發(fā)布到任何流行的 Linux或Windows 操作系統(tǒng)的機器上,也可以實現(xiàn)虛擬化,容器是完全使用沙箱機制,相互之間不會有任何接口。 ??作者簡介: 熱愛跑步的恒川 ,致力于

    2024年02月09日
    瀏覽(23)
  • VM虛擬機的ip突然不見了——吐血解決分享,就挺禿然的

    VM虛擬機的ip突然不見了——吐血解決分享,就挺禿然的

    問題:再虛擬機上不管是輸入 ip a,還是ifconfig,還是ip addr,還是root都是一個效果,只有主機的IP,虛擬機的IP不見了 ?網(wǎng)上好多方法是改ens33文件的,可是我的打開之后是空白的,根本就沒有東西,和我一樣的可以繼續(xù)往下看了。 ? 那我們就輸入service network-manager restart就不報錯

    2024年04月12日
    瀏覽(30)
  • jar包部署到linux虛擬機的docker中之后連不上mysql

    jar包部署到linux虛擬機的docker中之后連不上mysql

    跟著黑馬學習docker的時候,將java項目部署到了docker中,運行訪問報錯,反饋連不上mysql。 概述: 在虛擬中中,我進入項目容器的內部,嘗試ping mysql,發(fā)現(xiàn)ping不通, 然后查看其ip,發(fā)現(xiàn)不在同一個網(wǎng)段中,故基本可以鎖定問題原因就是沒有將項目跟mysql容器部署到同一個網(wǎng)絡

    2024年01月21日
    瀏覽(23)
  • 在VMware虛擬機上使用網(wǎng)絡測試命令找出虛擬機的IP地址

    在VMware虛擬機上使用網(wǎng)絡測試命令找出虛擬機的IP地址

    第一種方式輸入命令:ifconfig -a,然后回車,或者去掉 -a 也是可以的 第二種方式我們輸入ip查詢命名 ip addr 發(fā)現(xiàn)ens33 沒有inet 這個屬性,那么就沒法通過IP地址連接虛擬機。 接著來查看ens33網(wǎng)卡的配置:vi /etc/sysconfig/network-scripts/ifcfg-ens33 注意vi后面加空格 vi是Linux內置的文本編

    2024年02月03日
    瀏覽(18)
  • VMware17新建配置虛擬機的保姆級教程

    VMware17新建配置虛擬機的保姆級教程

    前言 對于Linux初學者來說,VMware這個虛擬機軟件就是不錯的選擇。下面我們一起來看看VMware配置虛擬機的詳細過程。 VMware版本:VMware workstation 17 pro Linux鏡像文件:CentOS 7 1.新建虛擬機 2.選擇自定義,以便于安裝CentOS7。 3.直接下一步。 4.選擇Linux系統(tǒng),版本選擇centos7;如果自

    2024年01月17日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包