本篇內(nèi)容介紹了“Docker能干什么”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括什邡網(wǎng)站建設(shè)、什邡網(wǎng)站制作、什邡網(wǎng)頁制作以及什邡網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,什邡網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到什邡省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
打開翻譯君輸入Docker 結(jié)果顯示碼頭工人,沒錯(cuò)!碼頭工人搬運(yùn)的是集裝箱,那么今天要講的Docker其操作的也是集裝箱,這個(gè)集裝箱就靜態(tài)而言就是一個(gè)應(yīng)用鏡像文件,就動(dòng)態(tài)而言,就是一個(gè)容器。蒙了吧?好吧,上圖解釋。
Docker從狹義上來講就是一個(gè)進(jìn)程,從廣義上來講是一個(gè)虛擬容器,其實(shí)更專業(yè)的叫法是應(yīng)用容器( Application Container ),Docker進(jìn)程和普通的進(jìn)程沒有任何區(qū)別,它就是一個(gè)普通的應(yīng)用進(jìn)程。不過是用來操作鏡像文件的。所以Docker進(jìn)程+構(gòu)建的應(yīng)用鏡像文件就等于Docker容器。本文所有講的Docker都是指Docker容器哦。
再繼續(xù)下文之前我們首先要明確幾個(gè)docker重要的基本概念吧,鏡像,容器,倉庫。
鏡像Docker images,就類似于VM虛擬機(jī)里面的快照,但是可比快照輕量化多了。快照不懂?那可以把images直接理解成一個(gè)文件夾。我們可以通過ID或者易識(shí)別的名字+tag來確認(rèn)唯一的目標(biāo)鏡像。ImagesID是一個(gè)64位的字符,但是一般我們都是使用前面12位就足夠區(qū)別了。
容器Docker containers,你可以從鏡像中創(chuàng)建容器,這如同從快照中創(chuàng)建虛擬機(jī),不過更輕量,啟動(dòng)更快,秒啟。應(yīng)用是在容器中運(yùn)行的,打個(gè)比方,你首先下載了一個(gè)Ubuntu的鏡像,然后又安裝MySQL和Django應(yīng)用及其依賴,來完成對(duì)它Ubutun鏡像的修改,一個(gè)個(gè)人覺得非常完美應(yīng)用鏡像生成了!就把這個(gè)鏡像分享給大家使用,大家通過這個(gè)鏡像就生成一個(gè)容器。容器啟動(dòng)之后就會(huì)運(yùn)行Django服務(wù)了。
倉庫Docker registeries,docker倉庫和存放集裝箱的倉庫是一樣的,不過docker使用來存放鏡像的。倉庫存在公有和私有之分,公有倉庫docker hub提供了非常多的鏡像文件,這些鏡像直接拉取下來就可以運(yùn)行了,你也可以上傳自己的鏡像到docker hub上面。同時(shí)也可以自己搭建私有倉庫用于團(tuán)隊(duì)項(xiàng)目管理。
結(jié)合前面介紹的基本概念,我們可以將docker的幾個(gè)概念使用大致串起來,他們之間是如何運(yùn)作的,也就是Docker的生命周期。看下圖,主要是三步走。
我們來看一下二者的區(qū)別,因?yàn)?VM 的 Hypervisor 需要實(shí)現(xiàn)對(duì)硬件的虛擬化,并且還要搭載自己的操作系統(tǒng),其中虛擬機(jī)操作系統(tǒng)占用內(nèi)存是比較大的,一個(gè)操作系統(tǒng)有好幾個(gè)G,自然在啟動(dòng)速度和資源利用率以及性能上有非常大的開銷,如果在本地,或者個(gè)人電腦,那么影響還不是那么大,但是在云端就是一個(gè)非常大的資源浪費(fèi)。
咱們很多時(shí)候做事情的時(shí)候不會(huì)考慮與事情本身無關(guān)的問題,比如造飛機(jī)的不會(huì)考慮飛機(jī)是否要潛水,對(duì)于我們目前很多移動(dòng)互聯(lián)網(wǎng)的應(yīng)用來說,很少會(huì)涉及到對(duì)操作系統(tǒng)的部分,其實(shí)我們主要關(guān)心的是應(yīng)用的本身,而VM虛擬機(jī)的上層是運(yùn)行的運(yùn)行時(shí)庫和應(yīng)用,整個(gè)虛擬機(jī)的空間是非常的龐大,但是容器化技術(shù)Docker技術(shù)的出現(xiàn)后,省去了操作系統(tǒng)這一層,多個(gè)容器之間相互隔離且共用了宿主操作系統(tǒng)和運(yùn)行時(shí)庫。
所以Docker 應(yīng)用容器相對(duì)于 VM 有以下幾個(gè)優(yōu)點(diǎn):
啟動(dòng)速度快,容器啟動(dòng)本質(zhì)就是一個(gè)開啟一個(gè)進(jìn)程而已,因此都是秒啟,而 VM 通常要更久。
資源利用率高,一臺(tái)普通 PC 可以跑成百上千個(gè)容器,你跑十個(gè) VM 試試。
性能開銷小, VM 通常需要額外的 CPU 和內(nèi)存來完成 OS 的功能,這一部分占據(jù)了額外的資源。
所以很多移動(dòng)互聯(lián)網(wǎng)的應(yīng)用或者云計(jì)算的后端節(jié)點(diǎn)都可以用docker來替換物理機(jī)器或者虛擬機(jī)。比如騰訊地圖的很多后臺(tái)服務(wù)基本上都遷移docker部署了。
前面說了那么多,始終還是霧里看花。下面就詳細(xì)介紹一下技術(shù)架構(gòu),底層又是用的啥技術(shù)來實(shí)現(xiàn)上述那么多優(yōu)點(diǎn)的?
Docker技術(shù)架構(gòu)圖:
通過腳本的方式安裝docker,非常簡單。
nicktang@nicktang-virtual-machine:~$ wget -qO- https://get.docker.com/ | sh
能夠看見版本號(hào),說明docker的安裝成功。簡單吧!至此就差一個(gè)鏡像了。自己制作還是從公共倉庫拉取就隨你啦。
root@nicktang-virtual-machine:/data # sudo service docker stop #關(guān)閉守護(hù)進(jìn)程
Docker的使用,我們主要從【增刪查】幾方面來說說怎么使用docker,為什么沒有【改】呢,因?yàn)樵谖铱磥韉ocker容器一旦出現(xiàn)問題了,根本沒有修復(fù)的必要,直接把容器停止并刪除,再啟動(dòng),這樣來得快。所以我們只需要掌握幾個(gè)基本命令即可,具體如下。
【查】查看本地已有的鏡像 Docker images
再用docker images查看的時(shí)候本地就增加了centos鏡像。
第一個(gè)字段就是已經(jīng)啟動(dòng)的容器ID,第二個(gè)字段就是這個(gè)容器是根據(jù)哪個(gè)鏡像生成的。但是上面這個(gè)命令只是臨時(shí)啟動(dòng)一下容器,上面圖中的status 是exited(0),表示容器是退出狀態(tài)。如果想容器在后臺(tái)運(yùn)行,所以我們需要啟動(dòng)守護(hù)式容器才可以,只要在啟動(dòng)命令中添加一個(gè) -d參數(shù),即docker run -d centos就可以了。
【查】查看鏡像/容器的具體信息 docker inspect鏡像ID(鏡像名)/容器ID(容器名) docker inspect centos
這個(gè)命令是返回一個(gè)鏡像或者容器詳細(xì)信息的json串。其中包括ID,ip,版本,容器的主程序等非常多的信息,根據(jù)這些信息我們可以進(jìn)行二次開發(fā)。在這個(gè)命令的基礎(chǔ)之上增加一個(gè)-f參數(shù)我們可以指定獲取自己需要的信息,比如獲取redis容器的IP地址,內(nèi)存信息,CPU使用情況。docker inspect -f '{{.NetworkSettings.IPAddress}}' [ID /Name]
查看容器目錄結(jié)構(gòu),發(fā)現(xiàn)和物理機(jī)器的目錄結(jié)構(gòu)完全一致,這就是為什么有的人稱docker容器也稱之為虛擬機(jī)的原因啦。Exit可以退出容器終端。
這年頭見面不聊點(diǎn)自動(dòng)化什么的,持續(xù)什么的,都不好意思。所以,咱們也要了解一下持續(xù)集成,自動(dòng)交付,自動(dòng)部署。但是上面說了這么多,沒發(fā)現(xiàn)Docker有那三樣功能啊,是的,Docker是沒有這個(gè)功能,但是你在完成上述三樣自動(dòng)化的步驟都是依賴Docker的。Docker是這些流程實(shí)現(xiàn)的基礎(chǔ),就如同軟件開發(fā),軟件代碼才是根本,開發(fā)工具是輔助。所有搭建一個(gè)完整的自動(dòng)化流程還需要github+jenkins+ registry三樣幫助。
持續(xù)集成和自動(dòng)部署的原理如下圖所示:
RD推送代碼到git 倉庫或者svn等代碼服務(wù)器上面,git服務(wù)器就會(huì)通過hook通知jenkins。
jenkine 克隆git代碼到本地,并通過dockerFile文件進(jìn)行編譯 。
打包生成一個(gè)新版本的鏡像并推送到倉庫 ,刪除當(dāng)前容器 ,通過新版本鏡像重新運(yùn)行。
而在整個(gè)過程中 RD只需要敲入三個(gè)命令Git add * ;Git commit –m “”;Git push即可完成持續(xù)集成、自動(dòng)交付、自動(dòng)部署。后面通過案例實(shí)際演示這個(gè)過程的神奇!
Docker還可以很方便的自動(dòng)擴(kuò)容哦,一般的自動(dòng)擴(kuò)容的兩種方式,一種就是docker容量擴(kuò)大,另一種就是docker節(jié)點(diǎn)數(shù)擴(kuò)充。第一種就修改配置文件即可,第二種通過簡單的拷貝,運(yùn)行就完成了節(jié)點(diǎn)的擴(kuò)容。
“Docker能干什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
分享題目:Docker能干什么
分享地址:http://aaarwkj.com/article2/gdchoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、小程序開發(fā)、微信公眾號(hào)、用戶體驗(yàn)、企業(yè)建站、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)