docker與虛擬機有何不同

来源:https://www.cnblogs.com/weihanli/archive/2018/08/22/9521219.html
-Advertisement-
Play Games

docker與虛擬機有何不同 Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發佈到任何流行的 Linux 機器上,也可以實現虛擬化。 容器技術有很多種,Docker是目前最流行的一種,網易雲也在使用Docker。伺服器虛擬化解決的核心問題是資源 ...


docker與虛擬機有何不同

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發佈到任何流行的 Linux 機器上,也可以實現虛擬化。

image

容器技術有很多種,Docker是目前最流行的一種,網易雲也在使用Docker。伺服器虛擬化解決的核心問題是資源調配,而容器解決的核心問題是應用開發、測試和部署。虛擬機技術通過Hypervisor層抽象底層基礎設施資源,提供相互隔離的虛擬機,通過統一配置、統一管理,計算資源的可運維性,以及資源利用率都能夠得到有效的提升。同時,虛擬機提供客戶機操作系統,客戶機變化不會影響宿主機,能夠提供可控的測試環境,更能夠屏蔽底層硬體甚至基礎軟體的差異性,讓應用做到的廣泛相容。然而,再牛逼的虛擬化技術,都不可避免地出現計算、IO、網路性能損失,畢竟多了一層軟體,畢竟要運行一個完整的客戶機操作系統。容器技術嚴格來說並不是虛擬化,沒有客戶機操作系統,是共用內核的。容器可以視為軟體供應鏈的集裝箱,能夠把應用需要的運行環境、緩存環境、資料庫環境等等封裝起來,以最簡潔的方式支持應用運行,輕裝上陣,當然是性能更佳。Docker鏡像特性則讓這種方式簡單易行。當然,因為共用內核,容器隔離性也沒有虛擬機那麼好。但是,更重要的是,通過Docker的特性,以容器化封裝為基礎,企業就可以很好地實現雲原生(向雲而生的架構),包括大家聽得耳朵都起繭子的微服務架構、DevOps,讓開發團隊可以從苦逼的運維工作中解脫,讓應用快速上線、快速迭代。微服務架構下,將系統拆分成多個服務,每個部分都可以獨立開發測試部署,同時我們也可以只擴展需要擴展的部分,也就是變一個三頭六臂的哪吒,而不是總要變三個孫悟空。微服務如何設計,基於容器的規模部署、高可用如何實現等,是另外的問題了。

一般來說,虛擬機都會有自己的kernel,自己的硬體,這樣虛擬機啟動的時候需要先做開機自檢,啟動kernel,啟動用戶進程等一系列行為,雖然現在電腦運行速度挺快,但是這一系列檢查做下來,也要幾十秒,也就是虛擬機需要幾十秒來啟動。

重新來理解虛擬機的概念,電腦科學家發現其實我們創建虛擬機也不一定需要模擬硬體的輸入和輸出,假如宿主機和虛擬機他們的kernel是一致的,就不用做硬體輸入輸出的搬運工了,只需要做kernel輸入輸出的搬運工即可,為了有別於硬體層面的虛擬機,這種虛擬機被命名為 操作系統層虛擬化:Operating-system-level virtualization 也被叫做容器

讓我們來回顧虛擬機的概念,在虛擬機的系統中,虛擬機認為自己有獨立的文件系統,進程系統,記憶體系統,等等一系列,所以為了讓容器接近虛擬機,也需要有獨立的文件系統,進程系統,記憶體系統,等等一系列,為了達成這一目的,主機系統採用的辦法是:只要隔離容器不讓它看到主機的文件系統,進程系統,記憶體系統,等等一系列,那麼容器系統就是一個接近虛擬機的玩意了

Reference

Contact

Contact me:[email protected]


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • URI URI全稱:Uniform Resource Identifier,中文名為統一資源標識符。用來標識唯一標識互聯網上的信息資源。 Web上可用的所有資源,比如html、圖像、視頻等,都是由URI進行標識。 URI包括URL和URN。 URL URL全稱:Uniform Resource Lo ...
  • 作為前端最火的構建工具,是前端自動化工具鏈 最重要的部分 ,使用門檻較高。本系列是筆者自己的學習記錄,比較基礎,希望通過 問題 + 解決方式 的模式,以前端構建中遇到的具體需求為出發點,學習 工具中相應的處理辦法。(本篇中的參數配置及使用方式均基於 ) 一. CSS文件基本處理需求 假設項目中的CS ...
  • 很多人不明白這個display:flex是到底是什麼東西,如何使用的 。 1.什麼是display:flex呢? 答:flex是 flexible box的縮寫,意為彈性佈局 ;這個東西的引入,為盒模型提供了最大的靈活性!可以相應式的實現各種頁面的佈局。 基本概念 採用flex佈局的元素,稱為fle ...
  • wxSearch優雅的微信小程式搜索框 一、功能 支持自定義熱門key 支持搜索歷史 支持搜索建議 支持搜索歷史(記錄)緩存 二、使用 1、將wxSearch文件夾整個拷貝到根目錄下 2、引入 3、使用3.1 wxml文件這裡有兩種模板:一種為wxSearch作者提供的模板,另一種是weui提供的模 ...
  • 在ES6中我們有兩種定義變數的方式:let const let特點: 1.let定義時不會進行變數聲明提升 2.變數不允許被重覆定義 3.變數不可以被刪除 4.在for迴圈當中用let定義i 迴圈時可以保存 i 的值 5.在塊級元素中用let定義的變數只能在當前塊級作用域中使用(註:凡是用{}包裹的 ...
  • 1. 2.在項目根目錄新建postcss.config.js文件,並對postcss進行配置: webpack編譯時如果出現No PostCSS Config的時候可以嘗試用這兩個方法來試試 ...
  • if (window["context"] == undefined) { if (!window.location.origin) { window.location.origin = window.location.protocol + "//" + window.location.hostna... ...
  • 一、新建項目使用scss 使用ng new 項目名稱創建項目的時候 ng new my-app --skip-install --prefix mpr --style=scss 二、已有項目使用scss 首先,安裝node-sass包 npm install node-sass --save-dev ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...