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

【Docker】什么是Docker,它用來干什么

這篇具有很好參考價(jià)值的文章主要介紹了【Docker】什么是Docker,它用來干什么。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

作者簡介: 辭七七,目前大一,正在學(xué)習(xí)C/C++,Java,Python等
作者主頁: 七七的個(gè)人主頁
文章收錄專欄: 七七的閑談
歡迎大家點(diǎn)贊 ?? 收藏 ? 加關(guān)注哦!????

【Docker】什么是Docker,它用來干什么


簡介

Docker 是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的鏡像中,然后發(fā)布到任何流行的 Linux或Windows操作系統(tǒng)的機(jī)器上,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。
一個(gè)完整的Docker有以下幾個(gè)部分組成:

  1. DockerClient客戶端
  2. Docker Daemon守護(hù)進(jìn)程
  3. Docker Image鏡像
  4. DockerContainer容器

Docker核心

Docker作為一個(gè)軟件集裝箱化平臺(tái),可以讓開發(fā)者構(gòu)建應(yīng)用程序時(shí),將它與其依賴環(huán)境一起打包到一個(gè)容器中,然后很容易地發(fā)布和應(yīng)用到任意平臺(tái)中
【Docker】什么是Docker,它用來干什么

起源

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

Docker自2013年以來非?;馃?,無論是從 github 上的代碼活躍度,還是Redhat在RHEL6.5中集成對(duì)Docker的支持, 就連 Google 的 Compute Engine 也支持 docker 在其之上運(yùn)行。

一款開源軟件能否在商業(yè)上成功,很大程度上依賴三件事 ——成功的 user case(用例), 活躍的社區(qū)和一個(gè)好故事。 dotCloud 之家的 PaaS 產(chǎn)品建立在docker之上,長期維護(hù)且有大量的用戶,社區(qū)也十分活躍,接下看看docker的故事。

  • 環(huán)境管理復(fù)雜
  • 云計(jì)算時(shí)代的到來
  • 虛擬化手段的變化
  • LXC的移動(dòng)性

面對(duì)上述幾個(gè)問題,docker設(shè)想是交付運(yùn)行環(huán)境如同海運(yùn),OS如同一個(gè)貨輪,每一個(gè)在OS基礎(chǔ)上的軟件都如同一個(gè)集裝箱,用戶可以通過標(biāo)準(zhǔn)化手段自由組裝運(yùn)行環(huán)境,同時(shí)集裝箱的內(nèi)容可以由用戶自定義,也可以由專業(yè)人員制造。這樣,交付一個(gè)軟件,就是一系列標(biāo)準(zhǔn)化組件的集合的交付,如同樂高積木,用戶只需要選擇合適的積木組合,并且在最頂端署上自己的名字(最后一個(gè)標(biāo)準(zhǔn)化組件是用戶的app)。這也就是基于docker的PaaS產(chǎn)品的原型。

Docker 架構(gòu)

Docker 使用客戶端-服務(wù)器 (C/S) 架構(gòu)模式,使用遠(yuǎn)程API來管理和創(chuàng)建Docker容器。Docker 容器通過 Docker 鏡像來創(chuàng)建。容器與鏡像的關(guān)系類似于面向?qū)ο缶幊讨械膶?duì)象與類。

Docker 面向?qū)ο?/th>
容器 對(duì)象
鏡像

Docker采用 C/S架構(gòu) Docker daemon 作為服務(wù)端接受來自客戶的請(qǐng)求,并處理這些請(qǐng)求(創(chuàng)建、運(yùn)行、分發(fā)容器)。 客戶端和服務(wù)端既可以運(yùn)行在一個(gè)機(jī)器上,也可通過 socket 或者RESTful API 來進(jìn)行通信。Docker daemon 一般在宿主主機(jī)后臺(tái)運(yùn)行,等待接收來自客戶端的消息。 Docker 客戶端則為用戶提供一系列可執(zhí)行命令,用戶用這些命令實(shí)現(xiàn)跟 Docker daemon 交互。

特性

在docker的網(wǎng)站上提到了docker的典型場景:

  • Automating the packaging and deployment of applications(使應(yīng)用的打包與部署自動(dòng)化)
  • Creation of lightweight, private PAAS environments(創(chuàng)建輕量、私密的PAAS環(huán)境)
  • Automated testing and continuous integration/deployment(實(shí)現(xiàn)自動(dòng)化測試和持續(xù)的集成/部署)
  • Deploying and scaling web apps, databases and backend services(部署與擴(kuò)展webapp、數(shù)據(jù)庫和后臺(tái)服務(wù))

由于其基于LXC的輕量級(jí)虛擬化的特點(diǎn),docker相比KVM之類最明顯的特點(diǎn)就是啟動(dòng)快,資源占用小。

  1. 構(gòu)建標(biāo)準(zhǔn)化的運(yùn)行環(huán)境,現(xiàn)有的方案大多是在一個(gè)baseOS上運(yùn)行一套puppet/chef,或者一個(gè)image文件,其缺點(diǎn)是前者需要base OS許多前提條件,后者幾乎不可以修改(因?yàn)閏opy on write 的文件格式在運(yùn)行時(shí)rootfs是read only的)。并且后者文件體積大,環(huán)境管理和版本控制本身也是一個(gè)問題。
  2. PaaS環(huán)境是不言而喻的,其設(shè)計(jì)之初和dotcloud的案例都是將其作為PaaS產(chǎn)品的環(huán)境基礎(chǔ)
  3. 因?yàn)槠錁?biāo)準(zhǔn)化構(gòu)建方法(buildfile)和良好的REST API,自動(dòng)化測試和持續(xù)集成/部署能夠很好的集成進(jìn)來
  4. 因?yàn)長XC輕量級(jí)的特點(diǎn),其啟動(dòng)快,而且docker能夠只加載每個(gè)container變化的部分,這樣資源占用小,能夠在單機(jī)環(huán)境下與KVM之類的虛擬化方案相比能夠更加快速和占用更少資源

局限

  1. Docker并不是全能的,設(shè)計(jì)之初也不是KVM之類虛擬化手段的替代品,簡單總結(jié)幾點(diǎn):Docker是基于Linux 64bit的,無法在32bit的linux/Windows/unix環(huán)境下使用
  2. LXC是基于cgroup等linux kernel功能的,因此container的guest系統(tǒng)只能是linux base的
  3. 隔離性相比KVM之類的虛擬化方案還是有些欠缺,所有container公用一部分的運(yùn)行庫
  4. 網(wǎng)絡(luò)管理相對(duì)簡單,主要是基于namespace隔離
  5. cgroup的cpu和cpuset提供的cpu功能相比KVM的等虛擬化方案相比難以度量(所以dotcloud主要是按內(nèi)存收費(fèi))
  6. Docker對(duì)disk的管理比較有限
  7. container隨著用戶進(jìn)程的停止而銷毀,container中的log等用戶數(shù)據(jù)不便收集

原理

Docker核心解決的問題是利用LXC來實(shí)現(xiàn)類似VM的功能,從而利用更加節(jié)省的硬件資源提供給用戶更多的計(jì)算資源。同VM的方式不同, LXC 其并不是一套硬件虛擬化方法 - 無法歸屬到全虛擬化、部分虛擬化和半虛擬化中的任意一個(gè),而是一個(gè)操作系統(tǒng)級(jí)虛擬化方法, 理解起來可能并不像VM那樣直觀。所以可以從虛擬化到docker要解決的問題出發(fā),看看docker是怎么滿足用戶虛擬化需求的。

用戶需要考慮虛擬化方法,尤其是硬件虛擬化方法,需要借助其解決的主要是以下4個(gè)問題:

  • 隔離性
  • 可配額/可度量
  • 移動(dòng)性
  • 安全性

Linux Namespace

LXC所實(shí)現(xiàn)的隔離性主要是來自kernel的namespace, 其中pid, net, ipc, mnt, uts 等namespace將container的進(jìn)程, 網(wǎng)絡(luò), 消息, 文件系統(tǒng)和hostname 隔離開。
pid namespace之前提到用戶的進(jìn)程是lxc-start進(jìn)程的子進(jìn)程, 不同用戶的進(jìn)程就是通過pidnamespace隔離開的,且不同 namespace 中可以有相同PID。具有以下特征:

  1. 每個(gè)namespace中的pid是有自己的pid=1的進(jìn)程(類似/sbin/init進(jìn)程)
  2. 每個(gè)namespace中的進(jìn)程只能影響自己的同一個(gè)namespace或子namespace中的進(jìn)程
  3. 因?yàn)?proc包含正在運(yùn)行的進(jìn)程,因此在container中的pseudo-filesystem的/proc目錄只能看到自己namespace中的進(jìn)程
  4. 因?yàn)閚amespace允許嵌套,父namespace可以影響子namespace的進(jìn)程,所以子namespace的進(jìn)程可以在父namespace中看到,但是具有不同的pid

Linux 容器

借助于namespace的隔離機(jī)制和cgroup限額功能,LXC提供了一套統(tǒng)一的API和工具來建立和管理container。
LXC 旨在提供一個(gè)共享kernel的 OS 級(jí)虛擬化方法,在執(zhí)行時(shí)不用重復(fù)加載Kernel, 且container的kernel與host共享,因此可以大大加快container的 啟動(dòng)過程,并顯著減少內(nèi)存消耗。在實(shí)際測試中,基于LXC的虛擬化方法的IO和CPU性能幾乎接近 baremetal 的性能, 大多數(shù)數(shù)據(jù)有相比 Xen具有優(yōu)勢。當(dāng)然對(duì)于KVM這種也是通過Kernel進(jìn)行隔離的方式, 性能優(yōu)勢或許不是那么明顯, 主要還是內(nèi)存消耗和啟動(dòng)時(shí)間上的差異。
在參考文獻(xiàn)中提到了利用iozone進(jìn)行 Disk IO吞吐量測試KVM反而比LXC要快,而且筆者在device mapping driver下重現(xiàn)同樣case的實(shí)驗(yàn)中也確實(shí)能得到如此結(jié)論。參考文獻(xiàn)從網(wǎng)絡(luò)虛擬化中虛擬路由的場景(網(wǎng)絡(luò)IO和CPU角度)比較了KVM和LXC, 得到結(jié)論是KVM在性能和隔離性的平衡上比LXC更優(yōu)秀 - KVM在吞吐量上略差于LXC, 但CPU的隔離可管理項(xiàng)比LXC更明確。

關(guān)于【Docker】什么是Docker,它用來干什么,七七就先分享到這里了,如果你認(rèn)為這篇文章對(duì)你有幫助,請(qǐng)給七七點(diǎn)個(gè)贊吧,如果發(fā)現(xiàn)什么問題,歡迎評(píng)論區(qū)留言?。????文章來源地址http://www.zghlxwxcb.cn/news/detail-469309.html

到了這里,關(guān)于【Docker】什么是Docker,它用來干什么的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • MySQL數(shù)據(jù)庫的連接池是用來干什么的?

    MySQL數(shù)據(jù)庫的連接池是用來干什么的?

    現(xiàn)在我們已經(jīng)知道,我們?nèi)魏我粋€(gè)系統(tǒng)都會(huì)有一個(gè)數(shù)據(jù)庫連接池去訪問數(shù)據(jù)庫,也就是說這個(gè)系統(tǒng)會(huì)有多個(gè)數(shù)據(jù)庫連接,供多線程并發(fā)的使用。同時(shí)我們可能會(huì)有多個(gè)系統(tǒng)同時(shí)去訪問一個(gè)數(shù)據(jù)庫,這都是有可能的。 所以當(dāng)我們把目光轉(zhuǎn)移到MySQL的時(shí)候,我們要來思考一個(gè)問題

    2023年04月10日
    瀏覽(17)
  • SIFT 算法和SURF(Speeded Up Robust Features)算法的全稱是什么,分別是什么意思,分別是用來干什么的?

    問題描述:SIFT 算法和SURF(Speeded Up Robust Features)算法的全稱是什么,分別是什么意思,分別是用來干什么的? 問題解答: SIFT 算法: 全稱: 尺度不變特征變換(Scale-Invariant Feature Transform)。 意義: SIFT 算法用于檢測圖像中的關(guān)鍵點(diǎn),并提取這些關(guān)鍵點(diǎn)的特征描述子,具有尺度

    2024年01月20日
    瀏覽(23)
  • 大數(shù)據(jù)是干什么的?

    大數(shù)據(jù)技術(shù)的戰(zhàn)略意義不在于掌握龐大的數(shù)據(jù)信息,而在于對(duì)這些有意義的數(shù)據(jù)進(jìn)行專業(yè)的處理。換句話說,如果把大數(shù)據(jù)比作一個(gè)行業(yè),這個(gè)行業(yè)盈利的關(guān)鍵在于提高數(shù)據(jù)的“處理能力”,通過“處理”實(shí)現(xiàn)數(shù)據(jù)的“增值”。 從技術(shù)上講,大數(shù)據(jù)和云計(jì)算的關(guān)系就像硬幣的

    2024年01月21日
    瀏覽(24)
  • 什么是tomcat?tomcat是干什么用的?

    什么是tomcat?tomcat是干什么用的?

    什么是tomcat Tomcat是常見的免費(fèi)的web服務(wù)器. Tomcat 這個(gè)名字的來歷,Tomcat是一種野外的貓科動(dòng)物,不依賴人類,獨(dú)立生活。 Tomcat的作者,取這個(gè)名字的初衷是希望,這一款服務(wù)器可以自力更生,自給自足,像Tomcat這樣一種野生動(dòng)物一般,不依賴其他插件,而可以獨(dú)立達(dá)到提供

    2023年04月11日
    瀏覽(24)
  • 在線ios免簽是干什么的?

    在本教程中,我們將介紹在iOS設(shè)備上實(shí)現(xiàn)免簽名應(yīng)用程序安裝的原理和詳細(xì)步驟。首先,請(qǐng)注意,這些應(yīng)用程序通??赡艽嬖陲L(fēng)險(xiǎn),因?yàn)樗鼈儧]有經(jīng)過蘋果官方的簽名審核。但是,現(xiàn)實(shí)中確實(shí)有一些情況,您可能需要安裝一些非官方渠道的iOS應(yīng)用。在這種情況下,下面的內(nèi)容

    2024年02月07日
    瀏覽(24)
  • node.js是干什么的

    node.js是干什么的

    Node.js是一個(gè)開源和跨平臺(tái)的JavaScript運(yùn)行時(shí)環(huán)境。它幾乎是任何類型項(xiàng)目的流行工具! Node.js在瀏覽器之外運(yùn)行V8 JavaScript引擎(Google Chrome的內(nèi)核)。這使得Node.js的性能非常好。 Node.js應(yīng)用程序在單個(gè)程序中運(yùn)行,無需為每個(gè)請(qǐng)求創(chuàng)建新的線程。Node.js在其標(biāo)準(zhǔn)庫中提供了一組異

    2023年04月09日
    瀏覽(20)
  • SpringBoot 配置文件:什么是配置文件?配置文件是干什么?

    SpringBoot 配置文件:什么是配置文件?配置文件是干什么?

    學(xué)習(xí)一個(gè)東西,我們先要知道它有什么用處。整個(gè)項(xiàng)目中所有重要的數(shù)據(jù)都在配置文件中配置,例如:數(shù)據(jù)庫的連接信息、項(xiàng)目啟動(dòng)窗口、第三方系統(tǒng)調(diào)用密鑰、日志等級(jí)…,如果沒有配置信息,那么 SpringBoot 項(xiàng)目就無法連接數(shù)據(jù)庫,不能保存關(guān)鍵日志,因此,在項(xiàng)目中,配

    2024年02月16日
    瀏覽(23)
  • 路由器是什么東西?路由器是干什么用的?

    路由器是什么東西?雖然這個(gè)問題對(duì)于大多數(shù)人來說都不是一個(gè)問題,但是任然有少數(shù)缺乏網(wǎng)絡(luò)基礎(chǔ)的朋友,不知道路由器到底是個(gè)什么東西,本文就簡單的介紹一下。 路由器(Router),是連接局域網(wǎng)與局域網(wǎng)、局域網(wǎng)與廣域網(wǎng)(Internet)的一種設(shè)備,它會(huì)根據(jù)信道的情況自

    2024年02月08日
    瀏覽(22)
  • DNS劫持是什么意思?DNS劫持是干什么用的?

    DNS劫持又稱域名劫持,是指在劫持的網(wǎng)絡(luò)范圍內(nèi)攔截域名解析的請(qǐng)求,分析請(qǐng)求的域名,把審查范圍以外的請(qǐng)求放行,否則返回假的IP地址或者什么都不做使請(qǐng)求失去響應(yīng),其效果就是對(duì)特定的網(wǎng)絡(luò)不能反應(yīng)或訪問的是假網(wǎng)址。 DNS劫持原理 我們以用戶訪問淘寶網(wǎng):www.taobao.

    2024年02月08日
    瀏覽(18)
  • WAF是干什么的 有哪些功能

    Web應(yīng)用防火墻簡稱:WAF(Web Application Firewall,Web應(yīng)用防火墻),很多人不了解WAF是干嘛的,WAF的功能有哪些,以及WAF的應(yīng)用場景!接下來小情給大家說一說! WAF是Web應(yīng)用防火墻(Web Application Firewall)的簡稱,Web應(yīng)用防火墻是通過執(zhí)行一系列針對(duì)HTTP/HTTPS的安全策略來專門為W

    2024年02月15日
    瀏覽(19)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包