摘要:包含的內(nèi)容本系列主要介紹三個(gè)上的項(xiàng)目由于只介紹核心的東西,所以不會包含下面這些項(xiàng)目使用語言開發(fā),將多個(gè)相關(guān)的容器配置在一起,從而可以同時(shí)創(chuàng)建啟動停止和監(jiān)控它們。由于本人時(shí)間安排發(fā)生變化,本系列停止更新,后面不確定是否會繼續(xù),非常抱歉。
本人docker初學(xué)者,邊學(xué)習(xí)邊總結(jié),一方面加深自己的理解,另一方面希望對其他想深入了解docker的同學(xué)有所幫助。
由于本人缺乏實(shí)戰(zhàn)經(jīng)驗(yàn),錯(cuò)誤在所難免,歡迎批評指正,謝謝。
包含的內(nèi)容本系列主要介紹三個(gè)github上的項(xiàng)目: moby、containerd、runc.
由于只介紹docker核心的東西,所以不會包含下面這些項(xiàng)目:
compose:使用Python語言開發(fā),將多個(gè)相關(guān)的容器配置在一起,從而可以同時(shí)創(chuàng)建、啟動、停止和監(jiān)控它們。
machine:幫助安裝docker到指定位置,包括本地虛擬機(jī)、遠(yuǎn)端云主機(jī)等,同時(shí)還管理這些主機(jī)的信息,可以很方便的操作安裝在不同主機(jī)上的這些docker。
kitematic:桌面版的docker客戶端(圖形界面),使用JavaScript基于electron開發(fā)。
toolbox:幫助安裝docker環(huán)境到Windows和Mac平臺,包括Docker引擎、Compose、 Machine和 Kitematic,當(dāng)然docker引擎是安裝在虛擬機(jī)里面的,本地只有客戶端,使用哪個(gè)虛擬機(jī)依賴于平臺,toolbox會幫你搞定這一切。
distribution:Registry 2.0的實(shí)現(xiàn),主要是管理和分發(fā)docker鏡像,Docker Hub背后的技術(shù)。
swarmkit:嵌入在docker里面的容器編排系統(tǒng),可以簡單的把它和docker的關(guān)系理解成IE瀏覽器和Windows的關(guān)系,捆綁銷售。
面向讀者本系列主要專注docker背后的技術(shù)和實(shí)現(xiàn)思路,不介紹怎么使用docker,不介紹代碼細(xì)節(jié)。
如果你是docker初學(xué)者,想了解怎么使用docker,那么本系列不適合你。
如果你已經(jīng)熟悉了基本的操作,想了解下高級點(diǎn)的參數(shù),或者想了解背后到底發(fā)生了什么,便于自己更好的使用docker,更好的解決碰到的問題,那么本系列適合你。
如果你是一名開發(fā)人員,想了解docker的代碼實(shí)現(xiàn)細(xì)節(jié),但又不知道從何處下手,本系列也許會給你一些啟發(fā)。
docker版本自從docker決定將swarm整合進(jìn)來弄企業(yè)版之后,代碼一直在調(diào)整,docker的一些目錄和程序名稱也在發(fā)生變化,所以本系列的內(nèi)容沒法覆蓋所有docker版本,只能挑其中的一個(gè)。
自v17.03開始,docker采用了新的發(fā)行方式,版本的發(fā)行周期變成了一個(gè)月一次,并且也分了企業(yè)版和社區(qū)版,在本系列中,將以v17.03社區(qū)版作為參考,建議大家閱讀本系列時(shí),手頭的docker版本不低于v17.03。
docker完整的變更列表請參考這里。
docker和moby的關(guān)系2017-04-18,在DockerCon 2017上,docker公司正式宣布成立moby項(xiàng)目,同時(shí)將github上的docker/docker項(xiàng)目重命名成了moby/moby,雖然會自動重定向,但代碼里的相關(guān)引用不排除會有問題,需要留意。
這里不評價(jià)這次變化,對普通使用者來說,不會發(fā)生任何變化,還是熟悉的命令,熟悉的參數(shù),對開發(fā)人員來說,代碼的位置變了,但代碼還是那份代碼。
以后moby會變成什么樣,現(xiàn)在還不清楚,有可能和docker的關(guān)系會變成blink和chrome的關(guān)系一樣,靜觀其變,希望不要影響我們學(xué)習(xí)。
文章列表注意:若沒有特別說明,本系列提到的docker源碼,都指的是moby的代碼
該系列的所有文章都會列在這里,便于大家選擇閱讀。由于本人時(shí)間安排發(fā)生變化,本系列停止更新,后面不確定是否會繼續(xù),非常抱歉。
走進(jìn)docker(01):hello-world的背后發(fā)生了什么?
走進(jìn)docker(02):image(鏡像)是什么?
走進(jìn)docker(03):如何繞過docker運(yùn)行hello-world?
走進(jìn)docker(04):什么是容器的runtime?
走進(jìn)docker(05):docker在本地如何管理image(鏡像)?
走進(jìn)docker(06):docker create命令背后發(fā)生了什么?
走進(jìn)docker(07):docker start命令背后發(fā)生了什么?
建議閱讀在閱讀本系列之前,如果對Linux不是很熟的話,建議先閱讀本人的Linux程序員專欄,里面包含了內(nèi)存、CPU、文件系統(tǒng)、網(wǎng)絡(luò)、namespace、cgroup等方面的詳細(xì)內(nèi)容,和docker相關(guān)的Linux知識還在更新中,敬請關(guān)注。
獲取docker相關(guān)的代碼由于現(xiàn)在docker依賴的containerd和runc是github上兩個(gè)多帶帶的項(xiàng)目,如果你需要分析docker的代碼,請確保containerd和runc的版本和docker的版本是一致的,檢查辦法如下:
#假設(shè)我們已經(jīng)將docker的源代碼clone到了/home/dev/repos/docker目錄下 dev@debian:~/repos/docker$ git branch * master #列出17.03相關(guān)的tag dev@debian:~/repos/docker$ git tag|grep 17.03 v17.03.0-ce v17.03.0-ce-rc1 v17.03.1-ce v17.03.1-ce-rc1 #取最新的v17.03.1-ce dev@debian:~/repos/docker$ git checkout -b v17.03.1-ce v17.03.1-ce Switched to a new branch "v17.03.1-ce" dev@debian:~/repos/docker$ git branch master * v17.03.1-ce #查看docker所用的runc和containerd的commit id dev@debian:~/repos/docker$ egrep "RUNC_COMMIT|CONTAINERD_COMMIT" ./hack/dockerfile/binaries-commits # When updating RUNC_COMMIT, also update runc in vendor.conf accordingly RUNC_COMMIT=54296cf40ad8143b62dbcaa1d90e520a2136ddfe CONTAINERD_COMMIT=4ab9917febca54791c5f071a9d1f404867857fcc #查看runc和containerd的庫路徑 dev@debian:~/repos/docker$ egrep "runc.git|containerd.git" ./hack/dockerfile/install-binaries.sh git clone https://github.com/docker/runc.git "$GOPATH/src/github.com/opencontainers/runc" git clone https://github.com/docker/containerd.git "$GOPATH/src/github.com/docker/containerd"
根據(jù)上面的結(jié)果,先將runc和containerd克隆下來,然后checkout相應(yīng)的commit id,這樣就可以配合docker的代碼一起看了。這里是上面例子中找到的containerd和runc的信息:
containerd: https://github.com/docker/con... 4ab9917febca54791c5f071a9d1f404867857fcc
runc: https://github.com/docker/run... 54296cf40ad8143b62dbcaa1d90e520a2136ddfe
注意:
可能是為了方便對runc進(jìn)行修改,docker將github.com/opencontainers/runc克隆到了github.com/docker/runc,在docker v17.03里面,runc是從github.com/docker/runc.git拉的代碼,然后放在本地的opencontainers/runc目錄下,假裝是opencontainers的runc,這個(gè)需要留意,別pull了錯(cuò)誤的庫。
上面顯示containerd的地址是https://github.com/docker/con...,這個(gè)沒有關(guān)系,github已經(jīng)將這個(gè)地址重定向到了https://github.com/containerd...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/26901.html
摘要:圖表君聊開篇今天是圖表君聊的第一篇,為什么會有這個(gè)系列呢容器技術(shù)出現(xiàn)已經(jīng)有一段時(shí)間了,之前零零星星的也看過一些文章,圖表君的項(xiàng)目上也在使用。至于,圖表君沒試過,官網(wǎng)有的教程,大家可以參考。上的官網(wǎng),安裝,然后跟著圖表君一起學(xué)習(xí)吧。 圖表君聊Docker-開篇 今天是圖表君聊Docker的第一篇,為什么會有這個(gè)系列呢?容器技術(shù)Docker出現(xiàn)已經(jīng)有一段時(shí)間了,之前零零星星的也看過一些文章...
摘要:方案匯總一開源方案采集展示報(bào)警二商業(yè)方案三云廠商騰訊云阿里云百度云華為云四主機(jī)監(jiān)控五日志監(jiān)控六服務(wù)監(jiān)控七存儲后端腦圖本文為容器監(jiān)控實(shí)踐系列文章,完整內(nèi)容見 概述 隨著越來越多的線上服務(wù)docker化,對容器的監(jiān)控、報(bào)警變得越來越重要,容器監(jiān)控有多種形態(tài),有些是開源的(如promethues),而另一些則是商業(yè)性質(zhì)的(如Weave),有些是集成在云廠商一鍵部署的(Rancher、谷歌云)...
摘要:方案匯總一開源方案采集展示報(bào)警二商業(yè)方案三云廠商騰訊云阿里云百度云華為云四主機(jī)監(jiān)控五日志監(jiān)控六服務(wù)監(jiān)控七存儲后端腦圖本文為容器監(jiān)控實(shí)踐系列文章,完整內(nèi)容見 概述 隨著越來越多的線上服務(wù)docker化,對容器的監(jiān)控、報(bào)警變得越來越重要,容器監(jiān)控有多種形態(tài),有些是開源的(如promethues),而另一些則是商業(yè)性質(zhì)的(如Weave),有些是集成在云廠商一鍵部署的(Rancher、谷歌云)...
摘要:用作為我們開發(fā)大禮包開篇是帶著一些朝圣的心情的。最著名的版本發(fā)布于年月日,距今正好第十一個(gè)年頭。在年全面采用運(yùn)行,間接拉升了生態(tài)的逼格,激發(fā)了整個(gè)群體的活力。但這也間接養(yǎng)成了開發(fā)重功能輕工程的通病,加上部署的隨意性,上規(guī)模后運(yùn)維虐成狗。 showImg(http://7xi8kv.com5.z0.glb.qiniucdn.com/php.jpg); 用 PHP 作為我們「Docker...
閱讀 2416·2021-11-25 09:43
閱讀 1195·2021-09-07 10:16
閱讀 2603·2021-08-20 09:38
閱讀 2936·2019-08-30 15:55
閱讀 1449·2019-08-30 13:21
閱讀 883·2019-08-29 15:37
閱讀 1435·2019-08-27 10:56
閱讀 2093·2019-08-26 13:45