正面回答這個問題之前,先看看虛擬機和Dcoker的區別。

  • 虛擬機:在一臺物理機器上,利用虛擬化技術,虛擬出來多個操作系統,每個操作系統之間是隔離的。舉例說明:電腦上安裝操作系統,比如我們安裝了win10的操作系統;再往上安裝虛擬機軟體,比如我們常用的VirtualBox、VMWare,它們的作用是模擬計算機硬體;這樣虛擬機模擬出來的操作系統了;在虛擬的操作系統中,安裝所需的軟體、組件等。比如我們在虛擬操作系統中安裝JDK、Tomcat等;最後就是具體的應用了,也就是把應用部署到Tomcat中。

  • Docker:官方解釋是開源的應用容器引擎。用人話解釋一下:依然需要現在電腦上安裝操作系統, 然後安裝Docker容器的管理器,到了這一步,不需要自己安裝JDK和Tomcat,而是由開發人員將素有的依賴和應用都被打包成了Docker鏡像。例如,JDK、Tomcat、應用都被打包在了一起,運行在Docker容器裏,容器和容器間是隔離的。

總結一下虛擬機和Docker的區別:

  • 從兩者的架構圖上看,虛擬機是在硬體級別進行虛擬化,模擬硬體搭建操作系統;而Docker是在操作系統的層面虛擬化,復用操作系統,運行Docker容器。

  • Docker的速度很快,秒級,而虛擬機的速度通常要按分鐘計算。

  • Docker所用的資源更少,性能更高。同樣一個物理機器,Docker運行的鏡像數量遠多於虛擬機的數量。

  • 虛擬機實現了操作系統之間的隔離,Docker算是進程之間的隔離,虛擬機隔離級別更高、安全性方面也更強。

再正面回答一下「Docker可以代替虛擬機運行生產伺服器麼」?

  • Docker是可以用於生產環境的;但是Docker是有學習成本的,前期要踩不少的坑;
  • 如果沒有容器集羣管理工具的話,只用Docker的話,沒有太大必要(人肉維護?開發和運維都會死的);
  • 虛擬機和Docker各有優勢,很多企業都採用物理機上做虛擬機,虛擬機中跑Docker的方式。
  • 總之,要說Docker代替虛擬機還為時過早,至少短期內不會;

我將持續分享Java開發、架構設計、程序員職業發展等方面的見解,希望能得到你的關注。


首先,大家需要明確一點,Docker容器不是虛擬機。

正面回答這個問題之前,先看看虛擬機和Dcoker的區別。虛擬機:在一臺物理機器上,利用虛擬化技術,虛擬出來多個操作系統,每個操作系統之間是隔離的。舉例說明:電腦上安裝操作系統,比如我們安裝了win10的操作系統;再往上安裝虛擬機軟體,比如我們常用的VirtualBox、VMWare,它們的作用是模擬計算機...

Docker容器虛擬化的好處 Docker項目的發起人和Docker Inc.的CTO Solomon Hykes認為,Docker在正確的地點、正確的時間順應了正確的趨勢—即高效地構建應用。現在開發者需要能方便地創建運行在雲平臺上的應用,也就是說應用必須能夠脫離底層機器,而且同時必須是「任何時間任何地點」可獲取的。...

使用 虛擬機 運行多個相互隔離的應用時,如下圖: 從下到上理解上圖: 基礎...因此,我們需要根據不同的應用場景和需求採用不同的方式使用Docker技術或使用伺服器虛擬化技術。...使用 虛擬機 運行多個相互隔離的應用時,如下圖: 從下到上理解上圖: 基礎因此,我們需要根據不同的應用場景和需求採用不同的方式使用Docker技術或使用伺服器虛擬化技術。

每日分享科技領域相關內容,有緣相遇,期待關注。在IT行業從業多年,也算從看著時代從物理伺服器走向虛擬化雲計算時代,又準備進入Docker時代,作為下一代虛擬化技術,Docker正改變著整個行業開發、測試、部署應用的方式,至於虛擬化技術和docker技術到底有什麼不同,下面來分析一下。01 什麼是虛擬化...我們單位最近在推docker,已經在開發測試環境使用(稍顯落後),下面我就談談自己的Docker的理解,以及Docker和虛擬機的區別。虛擬機先說說什麼是虛擬機:在一臺物理機器上

有幸經歷傳統企業的互聯網化轉型過程,從一參加工作開始跟著領導做去IOE化,大規模引入開源中間件,在此環境中,Docker進入我們的視野,在測試環境中開始手動部署Docker。由於公司的資源有限,我們的Docker部署採用三層體系,即物理機之上部署虛擬機,然後虛擬機中部署Docker,每個Docker執行只部署...使用 Docker,開發人員只需要關心容器中運行的應用程序,而運維人員只需要關心如 何管理容器。Docker 設計的目的就是要加強開發人員寫代碼的開發環境與應用程序要部署 的

大家好,我是小棗君。這個問題,我從頭給你梳理一下吧: 「雲計算」這個詞,相信大家都非常熟悉了。作為IT行業的熱門技術,它頻繁出現在各大媒體的新聞報道中。BAT這樣的互聯網企業,也經常把它掛在嘴邊。相信很多人都想學習雲計算,跟上技術潮流。如果對雲計算有一定了解的話,應該會或多或少地聽到...虛擬機運行在hypervisor之上。第二類,物理機上安裝正常的操作系統(例如Linux或Windows),然後在正常操作系統上安裝hypervisor,生成和管理虛擬機。像VMware、KVM、Xen、

沒有固定的演算法。但是一般會有幾個限制:1.內存內存基本上是一個硬限制。物理伺服器的內存肯定是有限的。例如,一臺伺服器有8 core,8G內存,通常hypervisor會佔用512M內存,大概還剩下7.5G內存,假設每個虛擬機的配置是1 core cpu,1G內存,那麼在此機器上最多可以運行7個這樣的虛擬機。再創建...網卡如果伺服器只有一個網卡,所有虛擬機的網路流量都是通過一塊網卡出去,虛擬機越多,每個虛擬機可以使用的帶寬就會越少,這個是需要綜合考慮。例如使用多個網卡等。3.

步驟1:為我們的容器創建第一個鏡像 以 centos 鏡像作為基礎鏡像,我們啟動自己的容器並在其中執行/bin/bash命令 註:-t-i 參數用於創建一個虛擬的命令行。sudo docker run-t-i centos/bin/bash 現在我們已經成功的運行了自己的第一個容器,並且進入到容器的命令行界面中。在容器中,我們執行...虛擬機的80埠在 Vagrantfile 中被綁定到主機的8080埠,也就是:主機8080->虛擬機80->容器80 sudo docker run-t-i-p 80:80-v/vagrant/htdocs:/var/

關於docker容器與虛擬機的對比,難道不是Docker官網講解的最好嗎?先從認識容器開始 將軟體打包成標準...虛擬機(VM)是一個物理硬體層抽象,用於將一臺伺服器變成多臺伺服器。...關於docker容器與虛擬機的對比,難道不是Docker官網講解的最好嗎?先從認識容器開始 將軟體打包成標準虛擬機(VM)是一個物理硬體層抽象,用於將一臺伺服器變成多臺伺服器。

建議選擇雙至強8核以上處理器.16G以上內存.1000G以上硬碟的配置.網卡選擇雙千M的.推薦用DELLR410或者DELLC1100等機型.託管到IDC機房以後建議用50G以上獨享帶寬.除此以外還需要你有一套虛擬主機管理系統以及20個以上的獨立IP.用來分配與管理虛擬機. 考慮到成本和風險問題.建議你直接到IDC公司...然後一天開機時間需要到20個小時左右,主要想內存方面大1225 2G/500S,E3-1225的CPU,標配2G ECC內存,500G硬碟×2 RAID,要運行20個虛擬機得自己再添4G內存這樣子。

使用虛擬機運行多個相互隔離的應用時,如下圖:

從下到上理解上圖:

  • 基礎設施(Infrastructure)。它可以是你的個人電腦,數據中心的伺服器,或者是雲主機。
  • 主操作系統(Host Operating System)。你的個人電腦之上,運行的可能是MacOS,Windows或者某個Linux發行版。
  • 虛擬機管理系統(Hypervisor)。利用Hypervisor,可以在主操作系統之上運行多個不同的從操作系統。類型1的Hypervisor有支持MacOS的HyperKit,支持Windows的Hyper-V以及支持Linux的KVM。類型2的Hypervisor有VirtualBox和VMWare。
  • 從操作系統(Guest Operating System)。假設你需要運行3個相互隔離的應用,則需要使用Hypervisor啟動3個從操作系統,也就是3個虛擬機。這些虛擬機都非常大,也許有700MB,這就意味著它們將佔用2.1GB的磁碟空間。更糟糕的是,它們還會消耗很多CPU和內存。
  • 各種依賴。每一個從操作系統都需要安裝許多依賴。如果你的的應用需要連接PostgreSQL的話,則需要安裝libpq-dev;如果你使用Ruby的話,應該需要安裝gems;如果使用其他編程語言,比如Python或者Node.js,都會需要安裝對應的依賴庫。
  • 應用。安裝依賴之後,就可以在各個從操作系統分別運行應用了,這樣各個應用就是相互隔離的。

理解Docker容器

使用Docker容器運行多個相互隔離的應用時,如下圖:

不難發現,相比於虛擬機,Docker要簡潔很多。因為我們不需要運行一個臃腫的從操作系統了。

從下到上理解上圖:

  • 基礎設施(Infrastructure)。
  • 主操作系統(Host Operating System)。所有主流的Linux發行版都可以運行Docker。對於MacOS和Windows,也有一些辦法」運行」Docker。
  • Docker守護進程(Docker Daemon)。Docker守護進程取代了Hypervisor,它是運行在操作系統之上的後臺進程,負責管理Docker容器。
  • 各種依賴。對於Docker,應用的所有依賴都打包在Docker鏡像中,Docker容器是基於Docker鏡像創建的。
  • 應用。應用的源代碼與它的依賴都打包在Docker鏡像中,不同的應用需要不同的Docker鏡像。不同的應用運行在不同的Docker容器中,它們是相互隔離的。

對比虛擬機與Docker

Docker守護進程可以直接與主操作系統進行通信,為各個Docker容器分配資源;它還可以將容器與主操作系統隔離,並將各個容器互相隔離。虛擬機啟動需要數分鐘,而Docker容器可以在數毫秒內啟動。由於沒有臃腫的從操作系統,Docker可以節省大量的磁碟空間以及其他系統資源。

說了這麼多Docker的優勢,大家也沒有必要完全否定虛擬機技術,因為兩者有不同的使用場景。虛擬機更擅長於徹底隔離整個運行環境。例如,雲服務提供商通常採用虛擬機技術隔離不同的用戶。而Docker通常用於隔離不同的應用,例如前端,後端以及資料庫。


答案肯定是可以的,這已經是當前的流行趨勢,從mysql就能看得出來,資料庫這麼重要的東西都能通過docker來運行,更不用說我們的小項目了;如果說你們公司還沒有應用docker和kubernetes,只能說你們是傳統行業,技術迭代的速度有點兒慢。

有圖有真相,上圖是docker官方網站的大背景圖,企業級容器平臺、快速安全可靠。

docker有如下特點
  • 標準:Docker鏡像有著同樣的標準,可移植,可以根據鏡像快速構建容器服務。

  • 輕量級:容器共享物理機器,每個應用程序不需要單獨的操作系統,從而提高伺服器利用率。

  • 安全:應用程序在容器中更安全,Docker提供業界最強的默認隔離功能。

傳統虛擬機相比docker而言:

虛擬機是將一臺伺服器轉變為多臺伺服器的物理硬體的抽象,允許多個虛擬機在一臺機器上運行,每個虛擬機都包含一個操作系統、應用程序、必要的二進位文件和庫的完整副本,佔用了數十個GB,另外虛擬機的啟動速度也很慢。

除此之外相比傳統的部署方式,每次都是安裝完一個軟體再安裝另一個軟體,大量重複的工作,並且在安裝過程中易出錯,結果難易保證。和docker相比較,方便、易管理、標準等以上特性還不足以讓你去嘗試嗎?


這個問題太好了,最近一直在學習docker,剛好昨天才把學習筆記整理出來發布到博客上。首先答案是可以的,具體怎樣看我下面回答

  1. 首先說下伺服器幹嘛的,不就是為您的應用程序做服務的嗎,把一個程序部署到服務就可以通過網址訪問了。

  2. 那docker是幹嘛的呢,也是為應用程序做服務的,是一個容器專門盛放應用程序的。把一個應用放到docker中就可以訪問了。

伺服器與docker有什麼不同?

一個項目開發的過程中是不是經常碰到一個問題,在我這邊運行的沒問題啊,怎麼在你那邊運行就有問題呢?然後摔鍋

應用部署到伺服器上的過程:因為我是做java開發的,就拿一個正常的java項目舉例。首先需要在伺服器上搭建基礎環境:

  • 配置jdk
  • 配置tomcat

  • 配置mysql
  • 配置redis

這只是一個簡單的項目的部署前的配置,之後把您的項目打包發送的tomcat,運行即可。那如果有十幾個伺服器需要部署呢?是不是就要配置環境十多次,那人不是崩潰了。而且還會出現開發那邊運行沒問題,部署上去有問題的事情。所以這個時候docker出來了。

應用部署到docker上的過程:
  • 開發環境下直接打包成鏡像

  • 把鏡像上傳到docker容器即可

兩步搞定,不需要配置複雜的環境。如果有十多個容器需要部署怎麼辦?直接遠程下載鏡像即可,是不是很簡單。

總結:Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發布到任何流行的Linux機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面。也是閑著比較流行替代伺服器的最佳選擇

如果您有什麼問題歡迎在評論區留言指出


Docker天生就是用來幹這事的。

Docker最適合以單一進程方式,運行微服務的架構組件。如果你要把docker當成桌面用,安裝上百十來個工具軟體,不停切換,那docker還真不適用。

Docker在實際性能上,要遠遠高於虛擬機。按照經驗判斷,我們認為kvm方式的虛擬化,伺服器性能有20%左右的損耗,而通過容器方式,性能損耗幾乎可以忽略不計。


docker適合平臺統一在linux的大單位用,服務越多越好,比如幾百、幾千、幾萬。配合k8s調度和微服務改造、加上自動化運維,能夠實現彈性擴容和縮容,達到on demand的效果,典型的用例是互聯網內容提供商。

對於一般中小企業,只有幾十臺伺服器的,平臺不統一的,投資docker不如虛擬機。

除了不能跨os平臺,docker的另一個缺陷是隔離度不夠。


先說答案:可以,但是沒有必要。

容器技術是虛擬化技術的應用,使用容器代替虛擬機運行程序自然是可以的,容器在持續集成方面相對虛擬機還有一定的優勢,但是如果僅僅是為了用容器而用容器,則沒有必要。

容器技術最大的優勢是容器編排,可以實現線上服務的無縫擴容,縮容,降級,熔斷等自動化操作,極大的降低運維成本。所以,如果不用容器編排,則無須急著遷移。


理論上完全可以的,但目前我所接觸到的生產方案基本上都是docker在虛機集羣上跑。


當然可以

虛擬機是在硬體層面上虛擬多個系統

docker是在系統層面上虛擬出來的

docker輕量的、資源佔用小 但是隔離性不是很好


看系統的要求了。docker不可能完全替代全部,windows伺服器不可以,軟體系統沒有使用docker重新載入的,也是很難的。


推薦閱讀:
相關文章