成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Docker學(xué)習(xí)與和應(yīng)用(一)_初步認(rèn)識(shí)

kgbook / 2301人閱讀

摘要:分別進(jìn)行配置和測(cè)試。也就是說對(duì)于開發(fā)和部署來說,使用可以更快速的交付和部署應(yīng)用環(huán)境。更便捷的應(yīng)用更新管理。使用鏡像創(chuàng)建并啟動(dòng)一個(gè)容器。執(zhí)行用戶指定的應(yīng)用程序。執(zhí)行完畢后,容器被終止。

Docker是為應(yīng)用的開發(fā)和部署提供的“一站式”容器解決方案,它能幫助開發(fā)者高效快速的構(gòu)建應(yīng)用,實(shí)現(xiàn)“Build,Ship and Run Any App, Anywhere”,從而達(dá)到“一次構(gòu)建,到處運(yùn)行”的目的。

Docker解決了什么問題

Docker項(xiàng)目的發(fā)起人Solomon Hykes認(rèn)為:

Docker在正確的地點(diǎn),正確的時(shí)間順應(yīng)了正確的趨勢(shì)--即高效地構(gòu)建應(yīng)用。

隨著各種云平臺(tái)的興起,開發(fā)者或者應(yīng)用部署者有一種迫切的想要將應(yīng)用從底層機(jī)器環(huán)境中脫離的需求,并且還需要讓同一個(gè)應(yīng)用在“任何時(shí)間任何地點(diǎn)”可以方便地被獲取。

傳統(tǒng)的方式中,在服務(wù)器中搭建一個(gè)常見的LAMP(Linux+Apache+Mysql+PHP)網(wǎng)站的步驟:

下載安裝Apache,Mysql和PHP以及其它的相關(guān)依賴環(huán)境。

分別進(jìn)行配置和測(cè)試。

整合到一起進(jìn)行功能測(cè)試。

這種方式操作枯燥繁瑣,將不同的軟件集成起來的過程中有很多不可控的風(fēng)險(xiǎn),最無法忍受的是,一旦需要重新遷移服務(wù)器或者重新部署一套環(huán)境,這樣的瑣碎和無趣的“體力活”還將重新執(zhí)行一遍。

針對(duì)這個(gè)問題,以前我們通常用虛擬機(jī)集成部署好一套環(huán)境,然后做成一個(gè)虛擬機(jī)模版來解決。不過這種方式有資源利用率低,靈活性差和遷移平臺(tái)限制等問題。例如,我們想要的僅僅是一個(gè)LAMP環(huán)境,但是用這種方式卻必須集成打包一個(gè)完整的操作系統(tǒng)(每個(gè)虛擬機(jī)需要多帶帶分配獨(dú)占的內(nèi)存,磁盤等資源)。此外,這樣打包后的一套LAMP環(huán)境中,軟件之間版本依賴性強(qiáng),很難進(jìn)行變更更新。最后,通常這樣的虛擬機(jī)還需要綁定特定的虛擬化管理程序來管理,這樣對(duì)于遷移的平臺(tái)就有了限制。

如今,Docker通過對(duì)Linux容器技術(shù)LXC(Linux Containers)等進(jìn)一步優(yōu)化,提供了各種容器管理工具,通過容器來管理應(yīng)用,這樣便可以達(dá)到"build once, works everywhere"的目的。也就是說對(duì)于開發(fā)和部署來說,使用Docker可以:

更快速的交付和部署應(yīng)用環(huán)境。

更高效的資源利用率。

更便捷的遷移和擴(kuò)展性。

更便捷的應(yīng)用更新管理。

Docker與虛擬機(jī)

Docker和虛擬機(jī)都是基于軟件的平臺(tái)虛擬化技術(shù),其中:

虛擬機(jī)屬于完全虛擬化,即模擬完整的底層硬件環(huán)境特權(quán)指令的執(zhí)行,客戶操作系統(tǒng)無需進(jìn)行修改。比如我們常用的VirtualBox,VMWare Workstation和Parallels Desktop等虛擬化軟件。

Docker和其它容器技術(shù)便是操作系統(tǒng)級(jí)虛擬化,即直接通過內(nèi)核創(chuàng)建虛擬的操作系統(tǒng)實(shí)例(內(nèi)核和庫),來隔離不同的進(jìn)程和資源。

也就是說,Docker容器不需要額外的虛擬機(jī)管理軟件和虛擬機(jī)操作系統(tǒng)層,直接在宿主機(jī)操作系統(tǒng)層面上實(shí)現(xiàn)虛擬化,從而達(dá)到輕量級(jí),高效的目的。如下圖所示(源自what-docker),左側(cè)是傳統(tǒng)的虛擬化方式,右側(cè)是Docker虛擬化的方式。很顯然,Docker的虛擬化方式?jīng)]有了虛擬機(jī)管理程序Hypervisor和虛擬機(jī)操作系統(tǒng)Guest OS層,取而代之的是Docker Engine容器支持層。

Docker中不仔需要為不同的應(yīng)用啟動(dòng)相應(yīng)的虛擬機(jī)了,直接在Docker容器中運(yùn)行應(yīng)用,并不需要消耗額外的系統(tǒng)的資源。因此,Docker的啟動(dòng)速度很快,通??梢赃_(dá)到秒級(jí),而傳統(tǒng)的虛擬機(jī)基本是分鐘級(jí)。

關(guān)于Docker中使用的容器技術(shù)和虛擬機(jī)性能的比較,IBM的一份研究報(bào)告An Updated Performance Comparison of Virtual Machines and Linux Containers.中通過試驗(yàn)得出結(jié)論表示,通常情況下,Docker容器技術(shù)的性能等同或超出使用KVM的性能。當(dāng)然,在CPU和內(nèi)存性能方面,KVM和Docker一樣都有明顯的但可忽略不計(jì)的開銷。同時(shí),對(duì)于I/O密集型的應(yīng)用,Docker和KVM也都需要進(jìn)行調(diào)整來減少開銷帶來的影響。

在隔離性方面,傳統(tǒng)虛擬機(jī)使用的是完全隔離,而Docker利用的是Linux系統(tǒng)的多種安全防護(hù)機(jī)制,從這個(gè)角度來看,傳統(tǒng)虛擬機(jī)比Docker多一層額外的隔離。當(dāng)然,這并不意味著,Docker就不安全,Docker使用了多種機(jī)制如安全選項(xiàng)和鏡像簽名機(jī)制等來保障使用Docker的安全性(Docker Doc:Introduction to Container Security。

Docker核心概念

接下來, 我們通過源自官網(wǎng)的Docker Architecture圖,來詳細(xì)闡述說明Docker的核心概念,其中主要構(gòu)成:

Docker Client是Docker的主要的用戶管理接口,也就是docker命令行管理界面,用戶與Docker Client打交道,通過它與Docker Daemon守護(hù)進(jìn)程進(jìn)行交互,進(jìn)而管理Docker中的Containers容器。

Docker Daemon是運(yùn)行在主機(jī)上的一個(gè)守護(hù)進(jìn)程。其中Docker ClientDocker Daemon可以運(yùn)行在同一個(gè)主機(jī)中,也可以通過Docker Client連接遠(yuǎn)程主機(jī)的Docker daemon。

Registry是注冊(cè)服務(wù)器,注冊(cè)服務(wù)器是存放倉庫(Repository)的具體服務(wù)器。

此外,Docker的核心概念中還包括鏡像(Images),容器(Container)和倉庫(Repository),其中:

Docker鏡像(Images)可以類比傳統(tǒng)的虛擬機(jī)中的模版,我們可以簡(jiǎn)單將其理解成一個(gè)面向Docker Engine且包含文件系統(tǒng)的只讀模版。

Docker容器(Containers),容器Containers相當(dāng)于鏡像Images的一個(gè)運(yùn)行實(shí)例。鏡像本身是只讀且保存不變的,容器在啟動(dòng)鏡像時(shí),Docker會(huì)在鏡像的最上層創(chuàng)建一個(gè)可寫文件層。因此,也可以看出,容器才是直接提供一個(gè)或一組應(yīng)用服務(wù),以及它們的必需運(yùn)行環(huán)境的組件。

Docker倉庫(Repository),是集中存放鏡像的地方,我們可以把它看成是一組鏡像的集合或者一個(gè)具體的項(xiàng)目,因?yàn)橥ǔR粋€(gè)完整的應(yīng)用是由很多鏡像堆積而成的。如下圖所示,便是官網(wǎng)公共庫https://hub.docker.com 中的repostitories列表,很顯然一個(gè)repository相當(dāng)于一個(gè)完整的項(xiàng)目。

Docker容器運(yùn)行過程

接下來, 我們還是通過源自官網(wǎng)的Docker Architecture圖,使用docker run ubuntu /bin/echo "Hello world"命令為例子,來闡述一個(gè)Docker容器運(yùn)行的整體過程。

當(dāng)我們使用docker run運(yùn)行下載自官網(wǎng)的ubuntu repository(其實(shí)也就是ubuntu鏡像)時(shí),Docker在后臺(tái)運(yùn)行的一整套標(biāo)準(zhǔn)操作包括:

docker daemon檢查本地是否存在ubuntu鏡像,不存在就從公有Registry倉庫中下載。

使用ubuntu鏡像創(chuàng)建并啟動(dòng)一個(gè)容器。

分配一個(gè)文件系統(tǒng),并在只讀的鏡像層外面掛載一層可讀寫層。

從宿主主機(jī)配置的網(wǎng)橋接口中橋接一個(gè)虛擬接口到容器中去。

從地址池配置一個(gè) ip 地址給容器。

執(zhí)行用戶指定的應(yīng)用程序/bin/echo "Hello world"。

執(zhí)行完畢后,容器被終止。

參考&引用

[1] Docker White Paper: Intro to Container Security

[2] 楊保華, 戴王劍,曹亞侖.(2015).Docker技術(shù)入門與實(shí)戰(zhàn).機(jī)械工業(yè)出版社.

[3] Wes Felter, Alexandre Ferreira, Ram Rajamony, Juan Rubio.(2014).IBM Research Report:An Updated Performance Comparison of Virtual Machines and Linux Containers.

[4] Docker Doc:Introduction to Container Security

[5] IBM developerWorks——LXC:Linux 容器工具

[6] Docker Architecture

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/26703.html

相關(guān)文章

  • Docker學(xué)習(xí)與和應(yīng)用(二)_使用Docker

    摘要:在前一篇文章學(xué)習(xí)與和應(yīng)用一初步認(rèn)識(shí)中,我們初步介紹了解決了什么問題,容器化技術(shù)與傳統(tǒng)的虛擬化方式的區(qū)別,以及簡(jiǎn)要介紹了的幾大核心概念鏡像容器和倉庫。針對(duì)上述問題,提供了的,通過使用指令配置的方式來創(chuàng)建鏡像。 在前一篇文章 Docker學(xué)習(xí)與和應(yīng)用(一)_初步認(rèn)識(shí)中,我們初步介紹了Docker解決了什么問題,Docker容器化技術(shù)與傳統(tǒng)的虛擬化方式的區(qū)別,以及簡(jiǎn)要介紹了Docker的幾大...

    Ocean 評(píng)論0 收藏0
  • CI Weekly #8 | CI/CD 技能進(jìn)階路線

    摘要:微店技術(shù)團(tuán)隊(duì)公眾號(hào)容器化之路這是一套以阿里云為基礎(chǔ),為核心,第三方服務(wù)為工具的開發(fā)測(cè)試部署流程,以及內(nèi)部的代碼提交,版本管理規(guī)范。如何打造安全的容器云平臺(tái)對(duì),微服務(wù),來說都是非常好的落地實(shí)踐技術(shù)。 在使用 flow.ci 進(jìn)行持續(xù)集成的過程中,也許你會(huì)遇到一些小麻煩。最近我們整理了一些常見問題在 flow.ci 文檔之 FAQ,希望對(duì)你有用。如果你遇到其他問題,也可以通過「在線消息」或...

    FuisonDesign 評(píng)論0 收藏0
  • PHP函數(shù)式編程的初步認(rèn)識(shí)

    摘要:函數(shù)式編程不是一個(gè)框架或工具,而是一種編寫代碼的方式。函數(shù)式編程首先是一個(gè)聲明式編程范例。舉個(gè)例子純函數(shù)函數(shù)式編程基于的前提是您將基于純函數(shù)構(gòu)建不可變的程序作為業(yè)務(wù)邏輯的構(gòu)建塊。 showImg(https://segmentfault.com/img/remote/1460000012402865?w=693&h=339); 最近朋友推薦這本書:Functional PHP ,很多對(duì)...

    wwq0327 評(píng)論0 收藏0
  • 服務(wù)器部署工具 - 收藏集 - 掘金

    摘要:基本入門前端掘金作者本文屬于翻譯文章,原文鏈接為。如果如何把應(yīng)用放在容器中運(yùn)行掘金本文適合零基礎(chǔ),且希望使用運(yùn)行應(yīng)用的人士。后端掘金使用構(gòu)建網(wǎng)站。 nginx 基本入門 - 前端 - 掘金作者:villainthr 本文屬于翻譯文章,原文鏈接為 nginx Beginner’s Guide。是至今為止見過最好的 nginx 入門文章。額。。。沒有之一。 這篇教程簡(jiǎn)單介紹了 nginx ...

    Shonim 評(píng)論0 收藏0
  • Day 2: AngularJS —— 對(duì)AngularJS的初步認(rèn)識(shí)

    摘要:開始使用現(xiàn)在創(chuàng)建一個(gè)名為的文件,它將會(huì)是一個(gè)基于的網(wǎng)上書店應(yīng)用。這將初始化應(yīng)用程序,并告訴要在這一部分活躍。將為每個(gè)元素增加元素。控制器和視圖之間的粘合劑,而且會(huì)注入到。現(xiàn)在我們添加書籍?dāng)?shù)組的對(duì)象到對(duì)象,這個(gè)對(duì)象對(duì)視圖是可見的。 編者注:我們發(fā)現(xiàn)了比較有趣的系列文章《30天學(xué)習(xí)30種新技術(shù)》,準(zhǔn)備翻譯,一天一篇更新,年終禮包。以下是第二天技術(shù)的譯文。 昨晚我完爆了一天一技術(shù)的任務(wù)...

    joyqi 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<