A. docker 別人能看到源碼嗎
d64或者arm)
2. 安裝Go語言安裝包
選擇合適的版本下載完成後,就可以開始進行Go語言安裝包的安裝了,過程如下。
FreeBSD、linux以及Mac O
B. 誰可以簡單介紹一下docker到底是干什麼用的
1)測試:Docker 很適合用於測試發布,將 Docker 封裝後可以直接提供給測試人員進行運行,不再需要測試人員與運維、開發進行配合,進行環境搭建與部署。
2)測試數據分離:在測試中,經常由於測試場景變換,需要修改依賴的資料庫數據或者清空變動 memcache、Redis 中的緩存數據。Docker 相較於傳統的虛擬機,更輕量與方便。可以很容易的將這些數據分離到不同的鏡像中,根據不同需要隨時進行切換。
3)開發:開發人員共同使用同一個 Docker 鏡像,同時修改的源代碼都被掛載到本地磁碟。不再因為環境的不同而造成的不同程序行為而傷透腦筋,同時新人到崗時也能迅速建立開發、編譯環境。
4)PaaS 雲服務:Docker 可以支持命令行封裝與編程,通過自動載入與服務自發現,可以很方便的將封裝於 Docker 鏡像中的服務擴展成雲服務。類似像 Doc 轉換預覽這樣的服務封裝於鏡像中,根據業務請求的情況隨時增加和減少容器的運行數量,隨需應變。
C. 學習Docker哪本書最好
Docker視頻免費下載
鏈接:https://pan..com/s/1WmpJyKAXcbPDgn29SS-c5g
Docker視頻|走進Docker|從Docker到CaaS(一)Docker集群管理介紹|從Docker到CaaS(三)Kubernetes|從Docker到CaaS(六)微服務與CaaS|從Docker到CaaS(二)Docker 容器管理工具|從 Docker 到 CaaS(五)靈雀雲部署 Docker 容器|
D. 《Docker經典實例》pdf下載在線閱讀,求百度網盤雲資源
《Docker經典實例》([美] Sébastien Goasguen)電子書網盤下載免費在線閱讀
鏈接:https://pan..com/s/1VMftFwlbAVEfCvu2rLFhhQ
書名:Docker經典實例
作者:[美] Sébastien Goasguen
譯者:劉斌
豆瓣評分:7.1
出版社:人民郵電出版社
出版年份:2017-2
頁數:316
內容簡介:
本書結構明晰,示例豐富詳實,是全面實用的Docker入門教程。作者全面介紹了Docker相關各種工具和平台,涵蓋網路、鏡像管理、配置以及包括Kubernetes和Mesos在內的編排和調度生態系統,對私有雲和公有雲上部署的應用程序都給出了豐富實用的解決方案和示例。本書適合運維人員、系統管理員和開發人員閱讀。
作者簡介:
作者簡介:
Sébastien Goasguen,Citrix高級開源解決方案架構師,主要從事Apache CloudStack項目,幫助開發CloudStack生態系統。他目前是Apache CloudStack項目的副總裁,也是Apache libcloud項目管理委員會的成員。
譯者簡介:
具有10餘年軟體開發經驗,關注後台開發技術和各種編程語言。做過電子商務、金融、企業系統以及Android手機開發,寫過Delphi,也兼做系統管理員和DBA,最近在做與Docker相關的工作。
E. 如何進行Docker源碼調試
經過研究docker的官方編譯腳步,發現本地編譯也很簡單,只需要在docker源碼的目錄下執行如下命令即可:
./hack/make.sh binary
上面這條命令就只會生成docker的二進制文件,不過肯定不會這么順利的,執行這個命令你就會發現錯誤。如果第一次執行報的錯誤應該是找不到相應的go依賴包。那麼現在就開始解決第一個問題,go依賴包。
解決go依賴包最直接的方法就一個一個去github或者其他地方去下載到本地,但是這樣做很麻煩,docker依賴的go語言包很多,然後依賴包可能又依賴其他包。這里有一個簡單實用的辦法,也是go語言管理項目的方便之處。通過go get命令來自動下載,例如發現報錯的是docker某一個目錄下的依賴包,那麼可以如下執行:
go get -v ./src/github.com/docker/docker/...
這條命令執行以後整個docker目錄下源文件依賴的包都會被自動下載。如果發現其他目錄下源文件也報同樣的錯誤,可以按照次方法解決。不過這里需要強調一點, 這些下載都是會下載最新的包,如果編譯老的docker肯定會出問題 ,如果編譯最新的docker代碼肯定不會有問題,因為官方的編譯是這種方式。
上面執行的命令都是建立在go語言環境建立成功的基礎上,我安裝的go遇到是1.3.3版本的,採用源碼方式安裝。安裝在/export/servers/go下面,然後所有的go語言工程源碼目錄放在 /export/servers/gopath。然後配置環境變數在用戶的根目錄下的.bashrc文件裡面如下:
export GOPATH=/export/servers/gopath
export GOROOT=/export/servers/go
export GOARCH=amd64
export GOOS=linux
F. Docker的主要作用是什麼
目前來看,Docker至少有以下應用場景:
1)測試:Docker 很適合用於測試發布,將 Docker 封裝後可以直接提供給測試人員進行運行,不再需要測試人員與運維、開發進行配合,進行環境搭建與部署。
2)測試數據分離:在測試中,經常由於測試場景變換,需要修改依賴的資料庫數據或者清空變動 memcache、Redis 中的緩存數據。Docker 相較於傳統的虛擬機,更輕量與方便。可以很容易的將這些數據分離到不同的鏡像中,根據不同需要隨時進行切換。
3)開發:開發人員共同使用同一個 Docker 鏡像,同時修改的源代碼都被掛載到本地磁碟。不再因為環境的不同而造成的不同程序行為而傷透腦筋,同時新人到崗時也能迅速建立開發、編譯環境。
4)PaaS 雲服務:Docker 可以支持命令行封裝與編程,通過自動載入與服務自發現,可以很方便的將封裝於 Docker 鏡像中的服務擴展成雲服務。類似像 Doc 轉換預覽這樣的服務封裝於鏡像中,根據業務請求的情況隨時增加和減少容器的運行數量,隨需應變。
具體到Docker技術在測試領域的應用,可以體現在:
1)快速搭建兼容性測試環境
從Docker的鏡像與容器技術特點可以預見,當被測應用要求在各類Web伺服器、中間件、資料庫的組合環境中得到充分驗證時,可以快速地利用基礎Docker鏡像創建各類容器,裝載相應的技術組件並快速啟動運行,測試人員省去了大量花在測試環境搭建上的時間。
2)快速搭建復雜分布式測試環境
Docker的輕量虛擬化特點決定了它可以在一台機器上(甚至是測試人員的一台筆記本電腦上)輕松搭建出成百上千個分布式節點的容器環境,從而模擬以前需要耗費大量時間和機器資源才能搭建出來的分布式復雜測試環境。
3)持續集成
Docker可以快速創建和撤銷容器,在持續集成的環境中,可以頻繁和快速地進行部署和驗證工作。
G. 《Docker從入門到實戰》epub下載在線閱讀全文,求百度網盤雲資源
《Docker從入門到實戰》(黃靖鈞)電子書網盤下載免費在線閱讀
鏈接:https://pan..com/s/1CD9s0KI5eNn5Dyt2dcvOyw
書名:Docker從入門到實戰
豆瓣評分:7.3
作者:黃靖鈞
出版社:機械工業出版社
出版年:2017-6
頁數:345
內容簡介
本書從Docker的相關概念與基礎知識講起,結合實際應用,通過不同開發環境的實戰例子,詳細介紹了Docker的基礎知識與進階實戰的相關內容,以引領讀者快速入門並提高。
本書共19章,分3篇。第1篇容器技術與Docker概念,涵蓋的內容有容器技術、Docker簡介、安裝Docker等。第2篇Docker基礎知識,涵蓋的內容有Docker基礎、Docker鏡像、Dockerfile文件、Docker倉庫、Docker容器、數據卷、網路管理等。第3篇Docker進階實戰,涵蓋的內容有操作系統、編排工具Compose、Web伺服器與應用、資料庫、編程語言、Docker API、私有倉庫、集群網路、Docker安全等。
本書非常適合所有對Docker感興趣的入門新手閱讀。不管是開發人員還是運維人員,都可以通過本書學習Docker的基本知識。即使不是程序員的讀者,本書同樣適合。普通用戶完全可以把Docker作為一個「好玩的工具」來使用,以體驗Docker帶來的便捷。
作者簡介
黃靖鈞
全棧開發者,熱衷開源技術。長期以來一直使用容器技術作為應用部署方案,在Docker容器實戰方面經驗豐富。有多年的大規模集群管理經驗。曾經從事PaaS與CaaS項目開發。現專注於Serverless與SDN等領域的研究。
H. 如何從Docker Registry中導出鏡像
一、目錄結構
Registry的配置文件中可以指定registry的運行目錄(實驗用本地文件系統作為後端存儲),registry會在這個目錄中建立相應的目錄結構,我在本地啟動一個registry服務,然後只push一個centos鏡像上去。鏡像名稱是localhost:5000/library/centos:latest,然後registry在本地創建了如圖1所示的目錄。
圖 1 registry目錄
為了顯示方便,我只截取了64位ID的前一部分。可以看到,目錄大體分為兩個:一個是blobs,一個是repositories。blobs中主要存放數據文件,可以看出都是經過sha256計算後的ID。repositories目錄中放鏡像的描述信息,記錄了一個鏡像有哪些layer,tag對應的manifest文件,link文件是一個文本文件,內容是一個形如「sha256:cf34a09a90b54c…」的64位ID,這個ID對應在blob中的文件其實就是這個image的manifest文件。
二、Manifest文件
manifest文件描述了一個鏡像的元信息,包括了layer的數據ID,layer的配置等,文件格式是json形式的文本文件。
docker鏡像可以分為V1和V2,在1.9以後鏡像格式有一些變化。為了向前兼容V1版本的docker,docekr
registryV2使用的manifest也對應地分為Schema1和Schema2,兩者可以通過官方對於manifest的解釋可以參考[1]和[2]。這里實驗都是在schema1上做的。
Schema1主要包含如下信息:
name:image的倉庫(repository)名,比如localhost:5000/library/centos:latest這個鏡像的repository name是library/centos
tag:該鏡像的tag
architecture:指該鏡像的宿主機的操作系統架構,如「amd64」
fsLayers:該欄位是一個數組,數組中的元素分別指明了各層對應的數據文件的sha256ID,數組的第1個就是鏡像的最頂層,第2個是次頂層…以此類推,值得注意的是,不同層的fsLayer
ID
有可能一樣,是因為有些層是空的,只有一些配置信息。當執行了一個不涉及文件操作的命令,這時候就會形成空fsLayer,空fsLayer計算出來的sha256ID也都是一樣的了。鏡像的一個layer,是由文件系統(比如新增的文件)fsLayer以及配置信息構成的,layer在docker的代碼層面又被稱為image,因為任意一個layer都可以作為頂層layer,被docker
image信息引用,從而成為一個image。所以需要區分fsLayer與layer。
history:該欄位也是一個數組,是為了兼容v1而設置的,指明了每個layer的配置信息,數組第一項對應的是鏡像的最頂層,與fslayer一起構成了一個layer。數組元素是一個json格式的map對象,key為「v1Compatibility」,值為一個字元串,該字元串就是layer的配置信息,可以直接用json.Unmrashal成為一個V1Image結構體(定義可以參考代碼github.com/docker/docker/image/image.go
L31)
schemaVersion:該manifest的版本,一個int型,如 1。
三、Tar包形式的鏡像
Docker中有個save和load命令。save命令可以將一個docker鏡像導出,把這個鏡像從最頂層到最底層的所有layer一起導出到一個tar包中,然後就可以隨意拷貝、發送這個tar包到別的機器,最後可以用load命令把這個鏡像重新載入進docker。
如果我們把一個鏡像從registry里拿出來,按照save成的tar包格式來組織,然後使用load命令載入,這樣就實現了不通過docker pull命令來下載鏡像,可以根據這個原理做第三方鏡像下載工具。
所以我們先來看一下鏡像的tar包形式是什麼樣的,我使用save命令導出了centos鏡像,解壓後目錄結構如圖2所示:
圖 2 鏡像tar包解壓後的目錄
下面對各文件進行解釋:
根目錄下的repositories文件,描述了這個鏡像的名字,tage,還有頂層layer的id
不同的文件夾代表了不同的layer。
json:layer的配置信息,如創建時間,執行命令等。
layer.tar:layer中包含的文件,如果是空layer,layer.tar解壓後就是空的。
VERSION: 版本信息。
四、從registry導出鏡像
我們對比tar包中的文件和registry中的文件,不難發現其中的對應關系,json、VERSION還有repositories文件都是可以從manifest中導出。
json文件其實就是之前提到的history欄位中v1Compatibilitiy,不同的是manifest中的這個欄位中有很多轉義符,我們需要去掉這些轉義符,方法是先Unmarshal成為一個V1Image結構體,然後在json.Marshal轉回字元串就好。
layer.tar其實就是blobs中對應的data文件,直接復制出來然後改個名字就可以。
VERSION是manifest中的schemaVersion。
repositories文件內容很簡單,格式是{「imageName」:{「tag」:」topLayerID」}},所以按照這個格式從manifest中找到對應的數據填進去就ok。
這些文件都准備好了以後,就可以准備打包成tar包了,直接使用linux中自帶的tar命令,這里需要注意的一點是,應該使用「只打包不壓縮」的選項。生成tar包後就可以直接使用docker load命令導入了。
我這么做了,是可以成功地導入一個鏡像。但是發現存在一個問題:使用上述方式導入的鏡像,每個layer的ID和我直接用docker
pull命令下載下的不一樣,而且docker
pull得到的ID從未在manifest和registry中的任何地方出現過。而且不管我使用新的機器還是重新pull,得到的ID都是一樣的。經過閱讀docker的代碼我才發現,layerID不是隨機生成的,也不是manifest中寫道的id,而是算出來的。下面就說一下計算過程。
我們最終需要的layerID在docker源碼中叫做StrongID,StrongID是把一個byte數組做Hash後得到的,這個byte數組的生成需要三個對象:v1Compatibility,blobSum(manifest中的fsLayerID),parent(父layer的StrongID),數組生成方法參考image.go中的MakeImageConfig方法(docker
1.9),基本操作就是把一個json對象轉成位元組數組。因為有parent欄位的存在,需要從最底層的layer開始計算,逐步迭代,最終的到top
layer的ID。最後要做的工作就是替換json文件中的id欄位和parent欄位成為新計算出來的ID即可。同樣地,文件夾名也要做相應改變。
增量導入:如果本地已經存在某些layer的情況,我們只用打包新的layer即可,因為導入時候docker會檢測這個layer是否存在,而且有parent信息來保證layer之間的關系。
I. 《Docker開發指南》pdf下載在線閱讀,求百度網盤雲資源
《Docker開發指南》([英] Adrian Mouat)電子書網盤下載免費在線閱讀
鏈接:https://pan..com/s/1xMEZtXRXb35L8iCdsFpu5g
書名:Docker開發指南
作者:[英] Adrian Mouat
譯者:黃彥邦
豆瓣評分:8.3
出版社:人民郵電出版社
出版年份:2017-4
頁數:288
內容簡介:
Docker容器輕量和可移植的特性尤其適用於動態和分布式的環境,它的興起給軟體開發流程帶來了一場革命。本書對Docker進行了全面講解,包括開發、生產以至維護的整個軟體生命周期,並對其中可能出現的一些問題進行了探討,如軟體版本差異、開發環境與生產環境的差異、系統安全問題,等等。
作者簡介:
作者簡介:
Adrian Mouat
Container Solutions公司首席科學家。參與過很多軟體項目,既有小型的Web應用,也有大型數據分析軟體。
譯者簡介 :
黃彥邦(Anthony Wong)
Linux開發專家,熱衷於開源技術,從事Linux相關開發工作十多年,曾參與多個大型開源項目,如Debian GNU/Linux和Ubuntu,提交補丁無數。以推動Debian系統中文化以及網站和文檔翻譯為目標,1998年成為中國首位Debian計劃官方開發者。
J. 如何學習Docker
如何學習Docker
對於在校學生而言,應該如何去學習docker?畢竟學校沒有具體的應用需求作為引導,所以應該如何去研究Docker?還有,Docker的源代碼有沒有必要去研究?
首先我說明下,我是一位在浙江大學VLIS實驗室雲計算項目組的學生,使用過Docker,研究過Docker及其源碼,也定製過Docker。
對於學生如何學習Docker,我認為首先要看一下學生個人的知識背景、能利用的資源資源、以及個人興趣和發展方向。
1.學習Docker,如果沒有雲計算的基本知識,以及內核的基本知識,那麼學習並理解起來會稍吃力。作為容器,Docker容器的優勢在哪,不足在哪,最好了解容器的實現是怎樣的(簡單了解);擁有鏡像管理,Docker又該如何體現軟體開發,集成,部署,發布,再迭代的軟體生命周期管理優勢。以上兩點我認為最為關鍵,有這兩方面的認識勢必會對之後的工作幫助巨大。
2.關於學習資源,起碼的硬體設施總是要有的。Docker及其生態的發展很快,不使用純理論肯定收效甚微。另外,資源還包括Docker官方,各大電子媒體平台,技術論壇,開源社區等,往往大拿的觀點能點破自己的困惑,或者讓自己知道哪方面的認識還很欠缺,以及讓自己少走很多的彎路。
3.個人興趣的話,歸結為強扭的瓜不甜。起碼應該認同Docker的設計價值,以及Docker的未來潛力,當然有依據的批判Docker並帶動大家的思考,也是深切關注的表現。
4.個人發展方向,我認為如果需要把Docker當作軟體生命周期管理工具的話,那用好Docker最為重要,API及命令的理解與使用是必需的。如果專注系統設計方面,那麼除Docker以上的知識與經驗之外,若有Docker源碼的學習與理解,那麼這些肯定會讓你的Docker水平提高一個層次。
2014-11-21 8 0
xds2000
學習Docker,最大的好處是跟進新技術發展方向。我覺得在校生應該沒有多少硬性需求在Docker的研究上,這也是為什麼學校沒做具體應用要求的原因。最實際的做法是看一些Docker使用案例,自己實踐出一些經驗應該會再以後的社會實踐中起到作用。
研究docker的源代碼,應該到你下定決心從事雲計算方面的事業或者研究,那麼你就需要以研究者的身份去做仔細的源碼分析的工作。
2014-11-21 3 0
劉勃GTDer
我作為參加工作的過來人來說,我認為只有你真正參加工作後,在工作中學習跟有意義,畢竟Docker知識雲計算其中的一個軟體平台而已,說不來等你畢業了,新的技術出現Docker不一定是唯一選擇。
作為學生了解新技術確實無可厚非,一定要能把理論轉化為生產力才是正道。
2014-12-15 3 0
9lives - 愛生活,愛雲計算。
學習任何一個開源新技術,首先問自己幾個問題:
1. 為什要學習它?
2. 學習它需要了解哪些相關知識點?
3. 如何快速學習?
4. 該技術的使用場景是什麼?
拿我個人的學習經驗來舉例(本人之前比較了解OpenStack)
為什要學習docker?
回答:
docker是輕量級虛擬化技術,docker使linux容器技術的應用更加簡單和標准化
docker的速度很快,容器啟動時毫秒級的
docker將開發和運維職責分清
docker解決了依賴地獄問題
docker支持幾乎所有操作系統
docker有著飛速發展的生態圈
很多IT巨頭逐漸加入和支持
學習它需要了解哪些相關知識點?
回答:
雲計算概念相關(restapi, 微服務,OpenStack)
Linux 系統管理(軟體包管理,用戶管理,進程管理等)
Linux 內核相關(Cgroup, namespace 等)
Linux 文件系統和存儲相關(AUFS,BRFS,devicemapper 等)
Linux 網路(網橋,veth,iptables等)
Linux安全相關(Appmor,Selinux 等)
Linux進程管理(Supervisord,Systemd etc)
Linux容器技術(LXC等)
開發語言(Python, GO,Shell 等)
3.如何快速學習?
回答:個人體會最好有一個實際的需求或項目來邊實踐邊學習,入門可以參考(第一本docker書)寫的不錯,非常適合入門。除此之外,閱讀牛人的blog比如官方blog http://blog.docker.com/
最後,參與社區互動也是很好的學習方式。
該技術的使用場景是什麼? 回答:docker非常適用於dev/test CI/CD 場景,用完就扔。還有就是PasS了。
歡迎大家討論。
2015-05-21 3 0
西弗爾 - 要麼牛逼,要麼滾蛋
你好!我也是在校的學生,也在自己學習docker,多多交流啊!
2015-05-23 1 1
田浩浩 - wizmacau developer
https:// github.com /llitfkitfk/docker-tutorial-cn/
BTW: 熟讀docker文檔
2014-11-21 0 0
tuxknight
樓上各位說的都很好,我再補充一點:
找份相關的實習工作
2015-07-22 0 0
lancer
工作和研究是兩個方向我個人認為,工作需要通過你的實際效能為企業帶來經濟效益,而研究的話可以專注某個點。但是研究離不開工作,因為工作可以讓你更好的理會技術帶來的價值,以及如何提供更好的服務,用戶使用場景需要那些技術的突破。有了這些認識,然後更加專注的研究某個技術點,這樣或許可以說技術和商業是分不開的。
2015-08-25 0 0
綠劍色影
docker現在十分火熱,值得學習一下。