0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Docker是什么它和虛擬機(jī)到底有什么區(qū)別

Wildesbeast ? 來(lái)源:今日頭條 ? 作者:程序猿研究中心 ? 2019-12-29 11:37 ? 次閱讀

Docker 概述

Docker 是一個(gè)開(kāi)源的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙盒機(jī)制,相互之間不會(huì)有任何接口(類似 iPhone 的 app)。幾乎沒(méi)有性能開(kāi)銷,可以很容易地在機(jī)器和數(shù)據(jù)中心中運(yùn)行。最重要的是,他們不依賴于任何語(yǔ)言、框架或包裝系統(tǒng)。

擴(kuò)展:沙盒

沙盒也叫沙箱,英文 sandbox。在計(jì)算機(jī)領(lǐng)域指一種虛擬技術(shù),且多用于計(jì)算機(jī)安全技術(shù)。安全軟件可以先讓它在沙盒中運(yùn)行,如果含有惡意行為,則禁止程序的進(jìn)一步運(yùn)行,而這不會(huì)對(duì)系統(tǒng)造成任何危害。

Docker 是 dotCloud 公司開(kāi)源的一個(gè)基于 LXC 的高級(jí)容器引擎,源代碼托管在 Github 上, 基于 go語(yǔ)言并遵從 Apache2.0 協(xié)議開(kāi)源。

Docker 讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的 container 中,然后發(fā)布到任何流行的 Linux 機(jī)器上。

官方網(wǎng)站:

https://www.docker.com/

docker官方網(wǎng)站

docker [?d?k?(r)] 碼頭工人

logo:

logo

注:docker 服務(wù)相當(dāng)于鯨魚(yú),container 容器就是集裝箱。

container :集裝箱,容器

docker: 碼頭工人

源代碼下載

https://github.com/docker/docker

擴(kuò)展:

集裝箱是海上運(yùn)貨的一個(gè)創(chuàng)新。

源代碼下載:

https://github.com/docker/docker

docker 容器技術(shù)和虛擬機(jī)對(duì)比:

相同點(diǎn):docker 容器技術(shù)和虛擬機(jī)技術(shù),都是虛擬化技術(shù)。

docker 容器技術(shù)和虛擬機(jī)對(duì)比

總結(jié):docker 相對(duì)于 VM 虛擬機(jī),少了虛擬機(jī)操作系統(tǒng)這一層,所以 docker 效率比虛擬機(jī)高

Docker 架構(gòu)

Docker架構(gòu)

工作流程:服務(wù)器 A 上運(yùn)行 docker Engine 服務(wù),在 docker Engine 上啟動(dòng)很多容器container,從外網(wǎng)Docker Hub上把image操作系統(tǒng)鏡像下載來(lái),放到container容器運(yùn)行。這樣一個(gè)容器的實(shí)例就運(yùn)行起來(lái)了。最后,通過(guò)Docker client對(duì)docker容器虛擬化平臺(tái)進(jìn)行控制。

Image 和 Container 的關(guān)系:image 可以理解為一個(gè)系統(tǒng)鏡像,Container 是 Image 在運(yùn)行時(shí)的一個(gè)狀態(tài)。如果拿虛擬機(jī)作一個(gè)比喻的話,Image 就是關(guān)機(jī)狀態(tài)下的磁盤(pán)文件,Container 就是虛擬機(jī)運(yùn)行時(shí)的磁盤(pán)文件,包括內(nèi)存數(shù)據(jù)。

dockerhub:dockerhub 是docker官方的鏡像存儲(chǔ)站點(diǎn),其中提供了許多常用的鏡像供用戶下載,如 ubuntu, centos 等系統(tǒng)鏡像。通過(guò)dockerhub用戶也可以發(fā)布自己的docker鏡像,為此用戶需要注冊(cè)一個(gè)賬號(hào),在網(wǎng)站上創(chuàng)建一個(gè)docker倉(cāng)庫(kù)。

Docker 核心技術(shù)

1.Namespace — 實(shí)現(xiàn)Container的進(jìn)程、網(wǎng)絡(luò)、消息、文件系統(tǒng)和主機(jī)名的隔離。

2.Cgroup — 實(shí)現(xiàn)對(duì)資源的配額和度量。

注:Cgroup 的配額,可以指定實(shí)例使用的cpu個(gè)數(shù),內(nèi)存大小等。就像如下圖,vmware 虛擬機(jī)中的硬件配置參數(shù)。

虛擬機(jī)配置

Docker特性

文件系統(tǒng)隔離:每個(gè)進(jìn)程容器運(yùn)行在一個(gè)完全獨(dú)立的根文件系統(tǒng)里。

資源隔離:系統(tǒng)資源,像CPU 和內(nèi)存等可以分配到不同的容器中,使用cgroup。

網(wǎng)絡(luò)隔離:每個(gè)進(jìn)程容器運(yùn)行在自己的網(wǎng)絡(luò)空間,虛擬接口和IP地址。

日志記錄:Docker 將會(huì)收集和記錄每個(gè)進(jìn)程容器的標(biāo)準(zhǔn)流(stdout/stderr/stdin),用于實(shí)時(shí)檢索或批量檢索。

變更管理:容器文件系統(tǒng)的變更可以提交到新的鏡像中,并可重復(fù)使用以創(chuàng)建更多的容器。無(wú)需使用模板或手動(dòng)配置。

交互式shell:Docker 可以分配一個(gè)虛擬終端并關(guān)聯(lián)到任何容器的標(biāo)準(zhǔn)輸入上,例如運(yùn)行一個(gè)一次性交互 shell。

優(yōu)點(diǎn):

1.一些優(yōu)勢(shì)和 VM 一樣,但不是所有都一樣。

比 VM 小,比VM快,Docker 容器的尺寸減小相比整個(gè)虛擬機(jī)大大簡(jiǎn)化了分布到云和從云分發(fā)時(shí)間和開(kāi)銷。Docker 啟動(dòng)一個(gè)容器實(shí)例時(shí)間很短,一兩秒就可以啟動(dòng)一個(gè)實(shí)例。

2.對(duì)于在筆記本電腦,數(shù)據(jù)中心的虛擬機(jī),以及任何的云上,運(yùn)行相同的沒(méi)有變化的應(yīng)用程序,IT 的發(fā)布速度更快。

Docker 是一個(gè)開(kāi)放的平臺(tái),構(gòu)建,發(fā)布和運(yùn)行分布式應(yīng)用程序。

Docker 使應(yīng)用程序能夠快速?gòu)慕M件組裝和避免開(kāi)發(fā)和生產(chǎn)環(huán)境之間的摩擦。

3.您可以在部署在公司局域網(wǎng)或云或虛擬機(jī)上使用它。

4.開(kāi)發(fā)人員并不關(guān)心具體哪個(gè) Linux 操作系統(tǒng)

使用 Docker,開(kāi)發(fā)人員可以根據(jù)所有依賴關(guān)系構(gòu)建相應(yīng)的軟件,針對(duì)他們所選擇的操作系統(tǒng)。然后,在部署時(shí)一切是完全一樣的,因?yàn)橐磺卸荚?DockerImage 的容器在其上運(yùn)行。開(kāi)發(fā)人員負(fù)責(zé)并且能夠確保所有的相關(guān)性得到滿足。

5.Google,微軟,亞馬遜,IBM 等都支持 Docker。

6.Docker 支持 Unix/Linux 操作系統(tǒng),也支持 Windows 戒 Mac

缺點(diǎn)局限性:

1.Docker 用于應(yīng)用程序時(shí)是最有用的,但并不包含數(shù)據(jù)。日志,跟蹤和數(shù)據(jù)庫(kù)等通常應(yīng)放在 Docker容器外。 一個(gè)容器的鏡像通常都很小,不適合存大量數(shù)據(jù),存儲(chǔ)可以通過(guò)外部掛載的方式使用。比如使用:NFS,ipsan,NFS 等, -v 映射磁盤(pán)分區(qū)

一句話:docker 就來(lái)用于計(jì)算,存儲(chǔ)交給別人。

oracle不適合使用 docker 來(lái)運(yùn)行,太大了,存儲(chǔ)的數(shù)據(jù)太多。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207920
  • 虛擬機(jī)
    +關(guān)注

    關(guān)注

    1

    文章

    888

    瀏覽量

    27814
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    446

    瀏覽量

    11738
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ARM Cortex-M0與Cortex-M0+到底有什么區(qū)別

    ARM Cortex-M0與Cortex-M0+到底有什么區(qū)別
    發(fā)表于 01-04 23:15

    同時(shí)DSP2812的源文件,命名不同,到底有什么區(qū)別?

    同時(shí)DSP2812的源文件,命名不同,到底有什么區(qū)別?新建DSP工程時(shí),到底用那種文件呢?講究嗎?
    發(fā)表于 04-07 12:57

    LED恒壓電源和恒流電源到底有什么區(qū)別?

    LED恒壓電源和恒流電源到底有什么區(qū)別?
    發(fā)表于 12-07 14:53

    乘法器與調(diào)制器到底有什么區(qū)別?

    乘法器與調(diào)制器到底有什么區(qū)別?調(diào)制函數(shù)的建模方法是什么?
    發(fā)表于 04-09 06:33

    USB 3.0和USB 2.0到底有什么區(qū)別呢?

    圖文講解USB 3.0和USB 2.0到底有什么區(qū)別呢?
    發(fā)表于 05-19 07:12

    KEIL、uVision、MDK、KEIL C51、RealView它們到底有什么區(qū)別?

    KEIL、uVision、MDK、KEIL C51、RealView它們到底有什么區(qū)別,又有什么聯(lián)系?
    發(fā)表于 07-01 09:08

    ARM和DSP到底有什么區(qū)別?

    現(xiàn)在在學(xué)ARM,想知道ARM和DSP到底有什么區(qū)別?為什么有些地方用DSP有些用ARM
    發(fā)表于 10-19 07:20

    什么是 Docker?Docker與傳統(tǒng)的虛擬機(jī)什么區(qū)別?

    Docker 容器將軟件以及運(yùn)行安裝所需的一切文件(代碼、運(yùn)行時(shí)、系統(tǒng)工具、系統(tǒng)庫(kù))打包到一起,這就保證了不管是在什么樣的運(yùn)行環(huán)境,總是能以相同的方式運(yùn)行。就好像 Java 虛擬機(jī)一樣,“一次編寫(xiě)
    的頭像 發(fā)表于 03-16 14:28 ?5.2w次閱讀
    什么是 <b class='flag-5'>Docker</b>?<b class='flag-5'>Docker</b>與傳統(tǒng)的<b class='flag-5'>虛擬機(jī)</b><b class='flag-5'>有</b><b class='flag-5'>什么區(qū)別</b>?

    CAN通訊中摩托羅拉格式與英特爾格式到底有什么區(qū)別

    本文檔的主要內(nèi)容詳細(xì)介紹的是CAN通訊中摩托羅拉格式與英特爾格式到底有什么區(qū)別。
    發(fā)表于 03-03 08:00 ?23次下載
    CAN通訊中摩托羅拉格式與英特爾格式<b class='flag-5'>到底有</b><b class='flag-5'>什么區(qū)別</b>

    Docker容器與虛擬機(jī)區(qū)別

    我曾經(jīng)將Docker容器視為輕量級(jí),精簡(jiǎn)的虛擬機(jī)。 進(jìn)行這種比較是有道理的,因?yàn)橹辽僭?b class='flag-5'>Docker的最初市場(chǎng)中,總是將其與虛擬機(jī)進(jìn)行比較-例如,"
    的頭像 發(fā)表于 05-03 17:17 ?7570次閱讀

    容器、Docker、虛擬機(jī)區(qū)別

    移植的系統(tǒng)。它不僅簡(jiǎn)化了打包應(yīng)用的流程,也簡(jiǎn)化了打包應(yīng)用的庫(kù)和依賴,甚至整個(gè)操作系統(tǒng)的文件系統(tǒng)能被打包成一個(gè)簡(jiǎn)單的可移植的包,這個(gè)包可以被用來(lái)在任何其他運(yùn)行Docker的機(jī)器上使用。 容器和虛擬機(jī)具有相似的資源隔離和分配方式,容器虛擬
    的頭像 發(fā)表于 11-05 09:41 ?2872次閱讀

    智能照明和傳統(tǒng)照明的系統(tǒng)到底有什么區(qū)別

    電子發(fā)燒友網(wǎng)站提供智能照明和傳統(tǒng)照明的系統(tǒng)到底有什么區(qū)別資料免費(fèi)下載
    發(fā)表于 11-26 06:41 ?26次下載

    如何區(qū)分虛擬機(jī)Docker

    首先,大家需要明確一點(diǎn),Docker容器不是虛擬機(jī)。 2014年,當(dāng)我第一次接觸Docker的時(shí)候,我把它比做一種輕量級(jí)的虛擬機(jī)。這樣做無(wú)可厚非,因?yàn)?/div>
    的頭像 發(fā)表于 02-14 11:36 ?994次閱讀
    如何區(qū)分<b class='flag-5'>虛擬機(jī)</b>與<b class='flag-5'>Docker</b>

    FPC與傳統(tǒng)PCB到底有什么區(qū)別.zip

    FPC與傳統(tǒng)PCB到底有什么區(qū)別
    發(fā)表于 03-01 15:37 ?4次下載

    Docker虛擬機(jī)區(qū)別

    Docker虛擬機(jī)是兩種不同的虛擬化技術(shù),它們?cè)趯?shí)現(xiàn)方式、資源消耗、運(yùn)行性能等方面存在許多差異。本文將會(huì)詳細(xì)介紹它們的區(qū)別。 一、實(shí)現(xiàn)方式 1.1
    的頭像 發(fā)表于 11-23 09:37 ?6818次閱讀