docker技術沙龍學習
簡介:
簡單的說Docker是一個構建在LXC之上的,基於程式容器(Processcontainer)的輕量級VM解決方案,Docker的初衷也就是將各種應用程式和他們所依賴的執行環境打包成標準的container/image,進而釋出到不同的平臺上執行。從理論上來講,各種虛擬機器Image也起著類似的作用。但是
Docker container和普通的虛擬機器Image相比, 最大的區別是它並不包含作業系統核心。所以更加的輕量化。普通虛擬機器將整個作業系統執行在虛擬的硬體平臺上, 進而提供完整的執行環境供應用程式執行, 而Docker則直接在宿主平臺上載入執行應用程式.。相對於VM,docker在其輕量、配置複雜度以及資源利用率方面有著明顯的優勢。
應用場景:
1.應用打包
製作過RPM、GEM等軟體包的同學可能很清楚,每一個軟體包依賴於哪個庫的哪個版本, 往往需要明確的寫在依賴列表裡。而依賴又往往分為編譯時依賴和執行時依賴。
在傳統的基礎設施環境下,為了保證所生成的軟體包在其它機器上可正常安裝且執行, 一般需要在打包之前建立個乾淨的虛擬機器,或者手工建立個chroot環境, 然後在這個乾淨的環境下安全各種依賴包,然後執行打包指令碼。 生成軟體包以後,需要再建立一個乾淨的環境安裝、執行這個軟體包,來驗證是否符合預期。 這樣雖然也能完成打包工作,但至少有以下缺點:
- 耗時耗力
- 依賴關係容易漏掉,比如:在乾淨的環境中經過多次除錯,把缺少的依賴包一個一個的裝上了, 但最後寫spec檔案時卻忘記新增某個依賴,導致下次打包時需要重新除錯或者打包後軟體包無法使用等問題。
透過docker可以很好的解決打包問題。具體作法如下:
- “乾淨的打包環境”很容易準備,docker官方提供的ubuntu、centos等系統映象天生就能作為純淨無汙染的打包環境使用
- Dockerfile本身能起到文件固化的作用,只要寫好Dockerfile,建立好打包映象,以後就能無限次重複使用這個映象進行打包
-
2.多租戶資源隔離
資源隔離對於提供共享hosting服務的公司是個強需求。 如果使用VM,雖然隔離性非常徹底,但部署密度相對較低,會造成成本增加。
docker容器充分利用linux核心的namespaces提供資源隔離功能。
結合cgroup,可以方便的設定某個容器的資源配額。 既能滿足資源隔離的需求,又能方便的為不同級別的使用者設定不同級別的配額限制。
但在這種應用場景下,由於容器中執行的程式對於hosting服務提供方來說是不可信的, 所以需要特殊的手段來保證使用者無法從容器中操作到宿主機的資源(即:越獄,儘管這種問題發生的機率很小,但安全無小事,多一層防護肯定讓人更加放心)。
3.內部開發環境
在容器技術出現之前,公司往往是透過為每個開發人員提供一臺或者多臺虛擬機器來充當開發測試環境。
開發測試環境一般負載較低,大量的系統資源都被浪費在虛擬機器本身的程式上了。
docker容器沒有任何CPU和記憶體上的額外開銷,很適合用來提供公司內部的開發測試環境。
而且由於docker映象可以很方便的在公司內部分享,這對開發環境的規範性也有極大的幫助。
如果要把容器作為開發機使用,需要解決的是遠端登入容器和容器內程式管理問題。 雖然docker的初衷是為“微服務”架構設計的,但根據我們的實際使用經驗, 在docker內執行多個程式,甚至sshd或者upstart也是可行的。
4.隔離應用
隔離應用依賴建立應用映象並進行復制建立容易分發的即啟即用的應用允許例項簡單、快速地擴充套件測試應用並隨後銷燬它們有很多種原因會讓你選擇在一個機器上執行不同的應用,比如之前提到的提高開發效率的場景等。
我們經常需要考慮兩點,一是因為要降低成本而進行伺服器整合,二是將一個整體式的應用拆分成松耦合的單個服務(譯者注:微服務架構)。
5.提高開發效率
這就帶來了一些額外的好處:Docker能提升開發者的開發效率。如果你想看一個詳細一點的例子,可以參考Aater在DevOpsDays Austin 2014 大會或者是DockerCon上的演講。不同的開發環境中,我們都想把兩件事做好。一是我們想讓開發環境儘量貼近生產環境,二是我們想快速搭建開發環境。
理想狀態中,要達到第一個目標,我們需要將每一個服務都跑在獨立的虛擬機器中以便監控生產環境中服務的執行狀態。然而,我們卻不想每次都需要網路連線,每次重新編譯的時候遠端連線上去特別麻煩。這就是Docker做的特別好的地方,開發環境的機器通常記憶體比較小,之前使用虛擬的時候,我們經常需要為開發環境的機器加記憶體,而現在Docker可以輕易的讓幾十個服務在Docker中跑起來
6.解決資源競爭
7.解決環境衝突
8.解決安全隱患
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29754888/viewspace-1586057/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- docker技術學習Docker
- 百度AR&VR技術沙龍VR
- 技術沙龍|京東雲區塊鏈進校園-京東雲&深圳大學線下沙龍分享回顧區塊鏈
- 技術沙龍|京東雲DevOps自動化運維技術實踐dev運維
- 技術沙龍|京東雲端到端多媒體關鍵技術揭秘
- 綠盟科技政府行業技術沙龍成功舉辦行業
- 企業級容器PaaS技術沙龍-4.14相約北京
- CCIA技術沙龍 | “資料安全風險評估及安全服務實踐” 沙龍成功舉辦
- 技術沙龍|原來落地AI應用是這麼回事兒!AI
- 關於舉辦“內容安全技術分享”沙龍的通知
- 宜信OCR技術探索之版面分析業務實踐|技術沙龍直播速記
- 運維新勢力技術沙龍,大咖們這麼說!運維
- 廈門 “泰斯特 Club” 第一屆測試技術沙龍
- 掘金 x 餓了麼技術沙龍 | 架構實踐專場架構
- 【技術乾貨】時速雲企業級容器PaaS技術沙龍 第八期
- 4月22日丨【雲資料庫技術沙龍】技術進化,讓資料更智慧資料庫
- “技術沙龍”來襲,邀您一同探討 Serverless 資料庫技術最佳實踐Server資料庫
- 技術沙龍|圍觀京東雲,您有一份區塊鏈技術禮包待查收!區塊鏈
- 4月22日,雲資料庫技術沙龍【杭州站】來了資料庫
- 技術Leader:像李雲龍一樣打造學習型團隊
- 上海站丨飛天技術沙龍 Serverless + AI 專場開啟報名!ServerAI
- KubeMeet 報名 | 「邊緣原生」線上技術沙龍完整議程公佈!
- 沙龍報名 | 京東雲DevOps——自動化運維技術實踐dev運維
- 沙龍報名 | 區塊鏈資料服務技術應用實踐區塊鏈
- 宜信智慧監控平臺建設實踐|宜信技術沙龍
- 技術沙龍出海日本:分享京東區塊鏈實踐與創新區塊鏈
- 傑蛙&Jenkins中文社群 首次聯袂DevOps技術實踐線上沙龍Jenkinsdev
- 迅雷鏈技術沙龍:什麼企業都適合用區塊鏈嗎?區塊鏈
- 阿里雲棲開發者沙龍(Java技術專場)火熱來襲!阿里Java
- 技術沙龍 | 雲時代下的架構演進—企業雲及雲原生技術落地實踐架構
- AI中臺:一種敏捷的智慧業務支援方案|宜信技術學院沙龍分享實錄AI敏捷
- 11月17日,千鏡可信生態技術專場沙龍邀你同行!
- 虛幻引擎Unreal Circle線下技術沙龍 | 3月19日廈門站Unreal
- 首站起航 | 綠盟科技TechWorld2021·創新派技術沙龍成功舉辦
- 線上直播預約,「洞見安全」深信服安全技術沙龍不容錯過!
- 上海·得物技術沙龍「安全專場」開啟報名啦!快來查收你的技術安全白皮書
- 技術年貨:美團技術沙龍合輯大放送——85個演講,70+小時視訊
- 技術沙龍|區塊鏈商用落地的策略與技術坑-區塊鏈擴充套件和Fabric商用(杭州)區塊鏈套件
- 【區塊鏈學院】第四期沙龍“區塊鏈技術落地商用之道”成功舉辦區塊鏈