版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
docker簡(jiǎn)介Docker提供了一個(gè)可以運(yùn)行你的應(yīng)用程序的封套(envelope),或者說(shuō)容器。它原本是dotCloud啟動(dòng)的一個(gè)業(yè)余項(xiàng)目,并在前些時(shí)候開(kāi)源了。它吸引了大量的關(guān)注和討論,導(dǎo)致dotCloud把它重命名到DockerInc。它最初是用Go語(yǔ)言編寫(xiě)的,它就相當(dāng)于是加在LXC(LinuXContainers,linux容器)上的管道,允許開(kāi)發(fā)者在更高層次的概念上工作。Docker擴(kuò)展了Linux容器(LinuxContainers),或著說(shuō)LXC,通過(guò)一個(gè)高層次的API為進(jìn)程單獨(dú)提供了一個(gè)輕量級(jí)的虛擬環(huán)境。Docker利用了LXC,cgroups和Linux自己的內(nèi)核。和傳統(tǒng)的虛擬機(jī)不同的是,一個(gè)Docker容器并不包含一個(gè)單獨(dú)的操作系統(tǒng),而是基于已有的基礎(chǔ)設(shè)施中操作系統(tǒng)提供的功能來(lái)運(yùn)行的。Docker類似虛擬機(jī)的概念,但是與虛擬化技術(shù)的不同點(diǎn)在于下面幾點(diǎn):虛擬化技術(shù)依賴物理CPU和內(nèi)存,是硬件級(jí)別的;而docker構(gòu)建在操作系統(tǒng)上,利用操作系統(tǒng)的containerization技術(shù),所以docker甚至可以在虛擬機(jī)上運(yùn)行。虛擬化系統(tǒng)一般都是指操作系統(tǒng)鏡像,比較復(fù)雜,稱為"系統(tǒng)”;而docker開(kāi)源而且輕量,稱為"容器”,單個(gè)容器適合部署少量應(yīng)用,比如部署一個(gè)redis、一個(gè)memcached。傳統(tǒng)的虛擬化技術(shù)使用快照來(lái)保存狀態(tài);而docker在保存狀態(tài)上不僅更為輕便和低成本,而且引入了類似源代碼管理機(jī)制,將容器的快照歷史版本一一記錄,切換成本很低。傳統(tǒng)的虛擬化技術(shù)在構(gòu)建系統(tǒng)的時(shí)候較為復(fù)雜,需要大量的人力;而docker可以通過(guò)Dockfile來(lái)構(gòu)建整個(gè)容器,重啟和構(gòu)建速度很快。更重要的是Dockfile可以手動(dòng)編寫(xiě),這樣應(yīng)用程序開(kāi)發(fā)人員可以通過(guò)發(fā)布Dockfile來(lái)指導(dǎo)系統(tǒng)環(huán)境和依賴,這樣對(duì)于持續(xù)交付十分有利。Dockerfile可以基于已經(jīng)構(gòu)建好的容器鏡像,創(chuàng)建新容器。Dockerfile可以通過(guò)社區(qū)分享和下載,有利于該技術(shù)的推廣。Docker會(huì)像一個(gè)可移植的容器引擎那樣工作。它把應(yīng)用程序及所有程序的依賴環(huán)境打包到一個(gè)虛擬容器中,這個(gè)虛擬容器可以運(yùn)行在任何一種Linux服務(wù)器上。這大大地提高了程序運(yùn)行的靈活性和可移植性,無(wú)論需不需要許可、是在公共云還是私密云、是不是裸機(jī)環(huán)境等等。Docker也是一個(gè)云計(jì)算平臺(tái),它利用Linux的LXC、AUFU、Go語(yǔ)言、cgroup實(shí)現(xiàn)了資源的獨(dú)立,可以很輕松的實(shí)現(xiàn)文件、資源、網(wǎng)絡(luò)等隔離,其最終的目標(biāo)是實(shí)現(xiàn)類似PaaS平臺(tái)的應(yīng)用隔離。Docker由下面這些組成:Docker服務(wù)器守護(hù)程序(serverdaemon),用于管理所有的容器。Docker命令行客戶端,用于控制服務(wù)器守護(hù)程序。Docker鏡像:查找和瀏覽docker容器鏡像。docker特性文件系統(tǒng)隔離:每個(gè)進(jìn)程容器運(yùn)行在完全獨(dú)立的根文件系統(tǒng)里。資源隔離:可以使用cgroup為每個(gè)進(jìn)程容器分配不同的系統(tǒng)資源,例如CPU和內(nèi)存。網(wǎng)絡(luò)隔離:每個(gè)進(jìn)程容器運(yùn)行在自己的網(wǎng)絡(luò)命名空間里,擁有自己的虛擬接口和IP地址。寫(xiě)時(shí)復(fù)制:采用寫(xiě)時(shí)復(fù)制方式創(chuàng)建根文件系統(tǒng),這讓部署變得極其快捷,并且節(jié)省內(nèi)存和硬盤(pán)空間。日志記錄: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。3兩個(gè)基礎(chǔ)概念images與containerContainer和Image在Docker的世界里,Image是指一個(gè)只讀的層(Layer),這里的層是AUFS里的概念,最直觀的方式就是看一下docker官方給出的圖:Docker使用了一種叫AUFS的文件系統(tǒng),這種文件系統(tǒng)可以讓你一層一層地疊加修改你的文件,最底下的文件系統(tǒng)是只讀的,如果需要修改文件,AUFS會(huì)增加一個(gè)可寫(xiě)的層(Layer),這樣有很多好處,例如不同的Container可以共享底層的只讀文件系統(tǒng)(同一個(gè)Kernel),使得你可以跑N多個(gè)Container而不至于你的硬盤(pán)被擠爆了!這個(gè)只讀的層就是Image!而如你所看到的,一個(gè)可寫(xiě)的層就是Container。那Image和Container的區(qū)別是什么?很簡(jiǎn)單,他們的區(qū)別僅僅是一個(gè)是只讀的層,一個(gè)是可寫(xiě)的層,你可以使用dockercommit命令,將你的Container變成一個(gè)Image,也就是提交你所運(yùn)行的Container的修改內(nèi)容,變成一個(gè)新的只讀的Image,這非常類似于gitcommit命令。4docker安裝與啟動(dòng)安裝docker[root@localhost/]#yum-yinstalldocker-io更改配置文件[root@localhost/]#vi/etc/sysconfig/dockerother-args歹U更改為:other_args="--exec-driver=lxc--selinux-enabled[root@localhost/]#servicedockerstartStartingcgconfigservice: [OK]Startingdocker: [OK]將docker加入開(kāi)機(jī)啟動(dòng)[root@localhost/]#chkconfigdockeron基本信息查看dockerversion:查看docker的版本號(hào),包括客戶端、服務(wù)端、依賴的Go等[root@localhost/]#dockerversionClientversion:1.0.0ClientAPIversion:1.12Goversion(client):go1.2.2Gitcommit(client):63fe64c/1.0.0Serverversion:1.0.0ServerAPIversion:1.12Goversion(server):go1.2.2Gitcommit(server):63fe64c/1.0.0dockerinfo:查看系統(tǒng)(docker)層面信息,包括管理的images,containers數(shù)等[root@localhost/]#dockerinfoContainers:16Images:40StorageDriver:devicemapperPoolName:docker-253:0-1183580-poolDatafile:/var/lib/docker/devicemapper/devicemapper/dataMetadatafile:/var/lib/docker/devicemapper/devicemapper/metadataDataSpaceUsed:2180.4MbDataSpaceTotal:102400.0MbMetadataSpaceUsed:3.4MbMetadataSpaceTotal:2048.0MbExecutionDriver:lxc-0.9.0KernelVersion:2.6.32-431.el6.x86_645鏡像的獲取與容器的使用鏡像可以看作是包含有某些軟件的容器系統(tǒng),比如ubuntu就是一個(gè)官方的基礎(chǔ)鏡像,很多鏡像都是基于這個(gè)鏡像"衍生”,該鏡像包含基本的ubuntu系統(tǒng)。再比如,hipache是一個(gè)官方的鏡像容器,運(yùn)行后可以支持http和websocket的代理服務(wù),而這個(gè)鏡像本身又基于ubuntu。搜索鏡像dockersearch<image>:在dockerindex中搜索image[root@localhost/]#dockersearchubuntu12.10NAME DESCRIPTION STARSOFFICIALAUTOMATEDTOC\o"1-5"\h\zmirolin/ubuntu12.10 0marcgibbons/ubuntu12.10 0mirolin/ubuntu12.10_redis 0chug/ubuntu12.10x32 UbuntuQuantalQuetzal12.1032bitbasei...0chug/ubuntu12.10x64 UbuntuQuantalQuetzal12.1064bitbasei...0下載鏡像dockerpull<image>:從dockerregistryserver中下拉image[root@localhost/]#dockerpullchug/ubuntu12.10x64查看鏡像dockerimages:歹0出imagesdockerimages-a:列出所有的images(包含歷史)dockerimages--tree:顯示鏡像的所有層(layer)dockerrmi<imageID>:刪除一個(gè)或多個(gè)image[root@localhost/]#dockerimagesREPOSITORYTAG IMAGEIDCREATEDVIRTUALSIZEchug/ubuntu12.10x64latest0b96c14dafcd4monthsago270.3MB[root@localhost/]#dockerimages-aREPOSITORYTAG IMAGEIDCREATEDVIRTUALSIZEchug/ubuntu12.10x64latest0b96c14dafcd4monthsago270.3MB<none> <none>31edfed3bb884monthsago175.8MB[root@localhost/]#dockerimages--treeWarning:'--tree'isdeprecated,itwillberemovedsoon.Seeusage.L-31edfed3bb88VirtualSize:175.8MBL-0b96c14dafcdVirtualSize:270.3MBTags:chug/ubuntu12.10x64:latest[root@localhost/]#dockerrmi<imageID>....使用鏡像創(chuàng)建容器[root@localhost/]#dockerrunchug/ubuntu12.10x64/bin/echohelloworldhelloworld交互式運(yùn)行[root@localhost/]#dockerrun-i-tchug/ubuntu12.10x64/bin/bashroot@2161509ff65e:/#查看容器dockerps:列出當(dāng)前所有正在運(yùn)行的containerdockerps-l:列出最近一次啟動(dòng)的containerdockerps-a:列出所有的container(包含歷史,即運(yùn)行過(guò)的container)dockerps-q:列出最近一次運(yùn)行的containerID[root@localhost/]#dockerpsCONTAINERIDIMAGE COMMANDCREATEDSTATUSPORTSNAMESccf3de663dc9chug/ubuntu12.10x64:latest/bin/bash22hoursagoUp22hourssharp_hypatia[root@localhost/]#dockerps-lCONTAINERIDIMAGE COMMANDCREATEDSTATUS PORTSNAMESf145f184647bchug/ubuntu12.10x64:latest/bin/bash6secondsagoExited(0)3secondsagocompassionate_galileo[root@localhost/]#dockerps-aCONTAINERIDIMAGE COMMANDCREATEDSTATUS PORTSNAMESf145f184647bchug/ubuntu12.10x64:latestcompassionate_galileo/bin/bash30secondsagoExited(0)26secondsagof4624b42fe7esharp_wilsonchug/ubuntu12.10x64:latest/bin/bash2minutesagoExited(0)2minutesagoccf3de663dc9sharp_hypatiachug/ubuntu12.10x64:latest/bin/bash22hoursagoUp22hours9cbaa79b9703agochug/ubuntu12.10x64:latestberserk_mcclintock/bin/bash22hoursagoExited(127)36minutes2161509ff65echug/ubuntu12.10x64:latest/bin/bash22hoursagoExited(0)22hoursagobackstabbing_mclean[root@localhost/]#dockerps-qccf3de663dc9再次啟動(dòng)容器dockerstart/stop/restart<container>:開(kāi)啟/停止/重啟containerdockerstart[container_id]:再次運(yùn)行某個(gè)container(包括歷史container)dockerattach[container_id]:連接一個(gè)正在運(yùn)行的container實(shí)例(即實(shí)例必須為start狀態(tài),可以多個(gè)窗口同時(shí)attach一個(gè)container實(shí)例)dockerstart-i<container>:啟動(dòng)一個(gè)container并進(jìn)入交互模式(相當(dāng)于先start,在attach)dockerrun-i-t<image>/bin/bash:使用image倉(cāng)^建container并進(jìn)入交互模式,loginshell是/bin/bashdockerrun-i-t-p<host_port:contain_port>:映射HOST端口到容器,方便外部訪問(wèn)容器內(nèi)服務(wù),host_port可以省略,省略表示把container_port映射到一個(gè)動(dòng)態(tài)端口。注:使用start是啟動(dòng)已經(jīng)創(chuàng)建過(guò)得container,使用run則通過(guò)image開(kāi)啟一個(gè)新的container。刪除容器dockerrm<container...>:刪除一個(gè)或多個(gè)containerdockerrm'dockerps-a-q':刪除所有的containerdockerps-a-q|xargsdockerrm:同上,刪除所有的container6持久化容器與鏡像6.1通過(guò)容器生成新的鏡像運(yùn)行中的鏡像稱為容器。你可以修改容器(比如刪除一個(gè)文件),但這些修改不會(huì)影響到鏡像。不過(guò),你使用dockercommit<container-id><image-name>命令可以把一個(gè)正在運(yùn)行的容器變成一個(gè)新的鏡像。dockercommit<container>[repo:tag]將一個(gè)container固化為一個(gè)新的image,后面的repo:tag可選。
REPOSITORYTAGIMAGEIDCREATEDVIRTUALSIZEchug/ubuntu12.10x64latest0b96c14dafcd4monthsago270.3MB[root@localhost/]#dockercommitd0fd23b8d3acchug/ubuntu12.10x64_2daa11948e23d970c18ad89c9e5d8972157fb6f0733f4742db04219b9bb6d063b[root@localhost/]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDVIRTUALSIZEchug/ubuntu12.10x64_2latestdaa11948e23d6secondsago270.3MBchug/ubuntu12.10x64latest0b96c14dafcd4monthsago270.3MBREPOSITORYTAGIMAGEIDCREATEDVIRTUALSIZEchug/ubuntu12.10x64latest0b96c14dafcd4monthsago270.3MB[root@localhost/]#dockercommitd0fd23b8d3acchug/ubuntu12.10x64_2daa11948e23d970c18ad89c9e5d8972157fb6f0733f4742db04219b9bb6d063b[root@localhost/]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDVIRTUALSIZEchug/ubuntu12.10x64_2latestdaa11948e23d6secondsago270.3MBchug/ubuntu12.10x64latest0b96c14dafcd4monthsago270.3MB6.2持久化容器export命令用于持久化容器dockerexport<CONTAINERID>>/tmp/export.tar6.3持久化鏡像Save命令用于持久化鏡像dockersave鏡像ID>/tmp/save.tar6.4導(dǎo)入持久化container刪除container2161509ff65e導(dǎo)入export.tar文件[root@localhost/]#cat/tmp/export.tar|dockerimport-export:latestaf19a55ff0745fb0a68655392d6d7653c29460d22d916814208bbb9626183aaaREPOSITORYTAG IMAGEIDCREATEDVIRTUALSIZEexport latestaf19a55ff074 34secondsago270.3MBchug/ubuntu12.10x64_2latestdaa11948e23d 20minutesago270.3MBchug/ubuntu12.10x64latest0b96c14dafcd4monthsago270.3MB6.5導(dǎo)入持久化image刪除imagedaa11948e23d導(dǎo)入save.tar文件[root@localhost/]#dockerload</tmp/save.tar對(duì)image打tag[root@localhost/]#dockertagdaa11948e23dload:tagexport-import與save-load的區(qū)另U導(dǎo)出后再導(dǎo)入(export-import)的鏡像會(huì)丟失所有的歷史,而保存后再加載(save-load)的鏡像沒(méi)有丟失歷史和層(layer)。這意味著使用導(dǎo)出后再導(dǎo)入的方式,你將無(wú)法回滾到之前的層(layer),同時(shí),使用保存后再加載的方式持久化整個(gè)鏡像,就可以做到層
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度建筑工程文明施工與信息化管理協(xié)議3篇
- 2024年高新技術(shù)產(chǎn)品公路運(yùn)輸保險(xiǎn)合同
- 2025年度特許經(jīng)營(yíng)合同標(biāo)的及服務(wù)內(nèi)容詳細(xì)描述3篇
- 二零二五年度房地產(chǎn)項(xiàng)目產(chǎn)權(quán)證照遺失代辦服務(wù)合同3篇
- 二零二五年度婚姻財(cái)產(chǎn)約定與風(fēng)險(xiǎn)防范協(xié)議3篇
- 二零二五年度城市綜合體入股合作合同3篇
- 2025年度城市軌道交通工程建筑施工安全協(xié)議責(zé)任書(shū)3篇
- 2024無(wú)人駕駛技術(shù)研發(fā)與應(yīng)用合同
- 2025年度手車(chē)交易不過(guò)戶車(chē)輛質(zhì)量檢驗(yàn)合同3篇
- 二零二五年度智慧城市基礎(chǔ)設(shè)施建設(shè)與運(yùn)營(yíng)合同3篇
- 散狀料上料安全操作規(guī)程模版(3篇)
- 2025戶外品牌探路者線上新媒體運(yùn)營(yíng)方案
- 《個(gè)案工作介入涉罪未成年人的家庭幫教研究》
- 統(tǒng)編版(2024新版)七年級(jí)上冊(cè)道德與法治期末綜合測(cè)試卷(含答案)
- 文化創(chuàng)意合作戰(zhàn)略協(xié)議
- 國(guó)家開(kāi)放大學(xué)法學(xué)本科《商法》歷年期末考試試題及答案題庫(kù)
- 2023年黑龍江日?qǐng)?bào)報(bào)業(yè)集團(tuán)招聘工作人員考試真題
- 安全管理人員安全培訓(xùn)教材
- 2024年婦??乒ぷ骺偨Y(jié)及計(jì)劃
- 北京理工大學(xué)《數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)》2022-2023學(xué)年第一學(xué)期期末試卷
- 錨桿(索)支護(hù)工技能理論考試題庫(kù)200題(含答案)
評(píng)論
0/150
提交評(píng)論