如何通俗解釋Docker是什麼?

時間 2021-05-06 21:39:51

1樓:程式設計師二毛

Docker是時下熱門的容器技術,相信作為一名開發人員,你一定聽說過或者使用過,很多人會把Docker理解為乙個輕量級虛擬機器,但其實Docker與虛擬機器(VM)是兩種不同的計算機虛擬化技術,也有很多人會覺得,有了虛擬機器,那為什麼還要使用Docker呢?

帶著心裡的一點點疑問,讓我們一起來學習Docker吧。

2樓:史密斯陳獨秀

想知道Docker是什麼,我覺得就需要了解CPU是如何處理任務的。

在普通的機器上,乙個單核的CPU日復一日做的事情就是處理任務,但是如果你需要一邊瀏覽網頁的時候一邊聽歌,這個時候CPU會怎麼做呢?

CPU會以極快的速度例如每1/8000秒,在瀏覽網頁與聽歌之間進行切換處理,這樣好讓你同時享受到兩種服務,同時,你絲毫沒有察覺到有停頓的現象。

而當你使用了Docker時,就像是用電腦來模擬另一台電腦,而這台模擬出來的電腦也會自帶一顆被模擬出來的CPU,去處理這台模擬電腦需要處理的任務。

這樣的好處是它可以製造乙個封閉的環境,不用擔心出現外部程序干擾到這台模擬電腦用模擬出來的CPU處理自己的程序。

3樓:咘咘仔

Docker就是可以讓開發者打包他們的應用以及依賴包到乙個輕量級、可移植的容器中,然後發布到任何流行的 Linux 機器上,也可以實現虛擬化。

Docker的應用場景

Web 應用的自動化打包和發布。

自動化測試和持續整合、發布。

在服務型環境中部署和調整資料庫或其他的後台應用。

從頭編譯或者擴充套件現有的 OpenShift 或 Cloud Foundry 平台來搭建自己的 PaaS 環境。

它的工作原理

4)重新啟動docker引擎

systemctl restart docker5)重新啟動docker容器

docker start 《容器id>

掌握上面的就足夠了,夠你在工作中使用。

4樓:disanda

Docker官網上有一句話:

Dokcer就是解決應用軟體的依賴和庫。

現在開發軟體都不是從0開始,需要依賴其他庫完成自己的工作,但是其他庫之間版本在不斷更新和公升級,難免會因為『零件『更新導致不匹配的情況。

Dokcer可以幫你固定這些依賴庫,讓其他不同平台很快部署,而不需要再裝這些不同尺寸的『零件』。

參考:https://

5樓:佰邦達科技

如果你使用過虛擬機器,那麼這個解釋對你來說會很直觀。

從雲計算服務的三層架構可以看出,傳統的IaaS層、虛擬機器是基礎組成部分,而虛擬機器都是基於Hyper-V架構的,也就是說,每乙個虛擬機器都會執行乙個完整的作業系統,乙個作業系統至少需要占用5GB左右的磁碟空間,但是作業系統對我們來說是完全無用的,我們真正關心的事虛擬主機所能提供的服務。因此,大家迫切需要更為輕量級的主機,這就是Docker技術火熱的本質原因。

容器由於省去了作業系統層,整個層級更為簡化,可以在單台伺服器上執行更多的應用,而這正是IaaS所需要的,可能5GB左右的空間對你個人來說不算什麼大事,可如果要是對外提供成千上萬的主機,那就成為了不得不考慮的問題,而這正是容器虛擬化要解決的問題。

Docker 的執行速度及部署速度也會快很多,簡而言之執行更快,資源占用更少,管理更方便。

6樓:月華

沒有容器的原本應用程式就好比你原本乙個人生活,做什麼事情都要親歷親為,乙個人買菜,乙個人燒水,乙個人洗衣服,有時候會忘記事情也沒有人提醒你。

Docker就是你找了乙個溫柔賢惠的妻子,能做的不僅僅是幫你整理外表和衣褶。更重要的是給了你乙個家。

7樓:

使用者環境的打包。

某人在A機器上裝了乙個mysql,然後想在B機器上再裝一遍。

可以直接打包成乙個docker image ,然後copy到B機器上執行。

很通俗易懂。

8樓:梯度雲

通過這兩句口號可以來理解Docker。

口號1:Build, Ship and Run,也就是「搭建、傳送和執行」。

以蓋房子為例:你畫圖紙、搬磚頭、弄材料,把房子蓋好了。想搬到另乙個地方,按以往的辦法,只能再次畫圖紙、搬磚頭、弄材料、蓋房子。

可如果能把之前蓋好的房子複製乙份,做成「映象」,放在自己的揹包裡。等到了新的空地,就用這個「映象」,複製貼上出一套房子,是不是就輕鬆多了。

口號2:Buildonce,Runanywhere,也就是搭建一次,到處能用

這裡要涉及到Docker的三大核心概念,分別是:

映象(Image)

容器(Container)

倉庫(Repository)

在上面的例子中,那個放在包裡的「映象」,就是Docker映象。而揹包,就是Docker倉庫。在空地上,用複製貼上造好的房子,就是乙個Docker容器。

這個Docker映象,是乙個特殊的檔案系統。它除了提供容器執行時所需的程式、庫、資源、配置等檔案外,還包含了一些為執行時準備的一些配置引數(例如環境變數)。

Docker倉庫用來儲存我們的「映象」,當建立了「映象」後,可以使用push命令將它上傳到公有或者私有倉庫,這樣下次要在別的機器上使用這個「映象」時,只需從倉庫上pull下來即可。

9樓:

你當成虛擬機器也不為過,因為有人把它當作虛擬機器用。

你把它當容器,就跟虛擬機器差了個底層,其實也沒多大問題。

虛擬機器虛擬整個系統,Docker虛擬程序。

開發好用,部署生產環境我就不曉得意義何在了(其實大型伺服器還能玩,但到了個人的,就沒什麼使用的意義了)。

(個人比較渣)

10樓:雪夜讀書

簡單用一句話說,docker is a chrooted environment on steriod。

docker就是嗑了興奮劑的chroot環境。

11樓:陳磊

docker對於有經驗的人來說一開始都無法接受的,因為應用級實現的隔離機制讓人匪夷所思,感覺這種隔離非常脆弱,非常挑應用,如果構造乙個特殊呼叫,應該很容易突破這種隔離,比如寫乙個驅動

12樓:

簡單的說,如果和ghost對比的話,docker算是作業系統啟動後,安裝軟體時候用的映象,而ghost是電腦啟動後安裝作業系統用的映象。

當然這個只是功能之一。但我其實就只用得到這個簡單的功能而已。和windows不同,在linux下裝軟體,曾經挺複雜的。

現在有了package manager好了一些,但有時候,庫的版本,還有相容性,以及是用不同安裝方法去安裝,庫的路徑問題,仍然會造成很多軟體安裝不了,或者不能正常工作。這算是自由的代價吧。

所以,用docker的話,就可以把安裝好的軟體連帶需要的依賴一起轉殖,這樣在另乙個電腦上,只要安了docker,再解壓這個轉殖,軟體就安好了。在windows下其實也有類似的軟體。這算是應用軟體虛擬化吧。

13樓:社會主義鎬把子

docker就是沙箱,它管理很多箱子,每個箱子裡都是一套執行環境,你可以定製這箱子裡的內容,甚至可以在箱子裡裝個作業系統。

14樓:和尚

大家都在買房,後來發現房子買不起了,我們租房更划算吧,反正就睡個覺而已,做飯衛生間大家一起用也無所謂。

所以出現了docker

15樓:

16樓:王大萌

在家宅了一天。

想吃黃燜雞公尺飯?點個外賣。

想吃超大雞排?點個外賣。

想吃重慶雞公煲?點個外賣。

外賣小哥遞到我們手上的是乙個餐盒,裡面有一整套的成「熟」的飲食方案:食材,佐料,餐具一應俱全。

廚師只需要將做好的食物打包到餐盒中,我們只需要將餐盒開啟吃掉食物。

那麼,廚師就是開發者,裡面的食物就是應用,而這個餐盒也就是我們要說的 docker 啦。

17樓:劉志軍

18樓:任國強

人們開發了作業系統的程序,後來覺得程序太浪費,又搞了執行緒,後來又覺得執行緒還是浪費,就搞了纖程。而容器則是自動化部署的反方向,發布單獨程式檔案不解氣,打包發布,打包發布還不解氣,web伺服器元件發布,web伺服器元件發布還不解氣,然後作業系統配置一起發布。不知道解釋的對不對?

19樓:James Swineson

Docker 是一種應用容器化交付的技術。容器化就是超強的靜態編譯——從作業系統到依賴庫亂七八糟東西全給你「靜態編譯」到一起變成乙個 super fat binary,就是乙個容器。

20樓:封禁讓我戒乎

通俗?那我才敢說一說:

虛擬機器隔離得好,但是代價大:同樣的物理機,同時執行10個虛擬機器,可能就力不從心了

docker相當於輕量級的虛擬機器,放棄某些隔離效果換來低代價:同樣的物理機,同時執行成千上萬個docker都可能,而且啟動非常快(虛擬機器都有乙個「硬體」自檢、OS啟動的過程;docker基本無這個過程,因為是直接執行在物理機的OS上的)

但虛擬機器可以在OSa上同時執行出n個OSa和m個OSb、p個OSc。。。

而docker只能在OSa上同時執行x個OSa(雖然x>>n+m+p+...)

21樓:品雪

一種使用者態虛擬機器,利用 Linux 的控制組、特殊檔案系統等基礎,以受控方式建立宿主系統的程序執行虛擬系統的程序,所謂受控就是攔截虛擬系統內的資源訪問請求並加以解釋。

因此具有虛擬機器相似的能力,但執行時資源訪問損耗比較小,因而可以在乙個宿主機上執行大量的容器例項,可以方便的容器映象檔案進行傳遞和重建。

22樓:淘李福

好像有人修改問題了,在計算機軟體開發這個領域,想知道乙個東西是什麼,一般通過模擬是沒有用的,因為所有的模擬都會丟失實際場合,而這往往阻止提問者理解為什麼需要這個技術。我認為,只有知道為什麼會出現這樣的技術,才能理解這個技術解決了什麼問題,並最終回答「這是什麼東西」

我為此寫了乙個系列文章,傳送門: Docker為什麼原答案分割線

docker的標準模擬就是貨櫃啊同學,這有啥好問的呢?

如果覺得這個模擬太土,建議聽一下《羅輯思維》的一期 「改變世界的箱子」 ,對應的書名為《貨櫃改變世界》

Python中 init 的通俗解釋是什麼?

beatme 給例項賦值,初始化物件 就好像c裡面結構體的初始化,先malloc乙個結構體大小的記憶體 python裡是 new 然後給每個成員賦值。 小鮑 是否可以理解為函式引用,之前5 6年都在用Labview,跟這個開發環境很多的邏輯是互通的。匯入 init 方法後 其實也可以稱為函式 在整個...

如何通俗地解釋 C C C Java JavaScript HTML Python的用處?

Archeus 程式語言總的來說是跟計算機硬體互動的語言。比如 傳送 你好 小明 不同的計算機語言的單詞,標點,語法不同。它們各有各的側重點,有的擅長網路通訊,有的擅長顯示影象,有的語法嚴謹,有的簡約易用。對於想入門卻又不知道選哪門語言的同學,我的建議是 在當前流行的語言當中任選一門立刻開始學習,不...

如何通俗解釋張量密度?

mcxzx 張量密度就是乙個將體元對映到乙個k,l型張量的齊次對映,齊次的次數就是密度的權 這裡體元就是反映 塊 面積 體積 測度大小的量,張量密度隨著它變化而變化。假設有 維流形 令 代表流形 上的全體光滑 k,l 型張量場,代表 上的全體體元 n 形式 注意所有體元之間只差乙個標量場。那麼乙個權...