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
- 如何學習技術?
- 如何學習新技術
- 技術學習網站學習網站
- 攝影技術學習
- 百度技術沙龍上演 “技塑人生” 生活與技術共精彩
- 【Web技術學習】PHP學習筆記WebPHP筆記
- 百度AR&VR技術沙龍VR
- 看雪 安全技術沙龍 第1期
- 深度學習技術研究會深度學習
- 如何學習後端技術?後端
- Docker技術( 容器虛擬化技術 )Docker
- ITPUB技術沙龍全國巡展-北京站1
- 技術沙龍|京東雲DevOps自動化運維技術實踐dev運維
- 技術沙龍|京東雲端到端多媒體關鍵技術揭秘
- 防病毒、駭客技術、網路安全技術的學習經驗、學習方法和學習網站學習網站
- Docker--容器技術Docker
- docker容器技術原理Docker
- docker 學習Docker
- Docker學習Docker
- 深度學習、強化學習核心技術實戰深度學習強化學習
- Docker | Docker技術基礎梳理(一)Docker
- Docker容器技術與Docker介紹Docker
- [Docker 系列]docker 學習 三Docker
- 【Docker 系列】docker 學習 三Docker
- 學習java技術有前途嗎Java
- 區塊鏈技術學習指引區塊鏈
- 技術學習的二八法則
- FlashCopy&VolumeCopy技術學習
- 學習ASM技術(三)--diskgroup管理ASM
- 學習ASM技術(二)--diskgroup管理ASM
- 簡單之美:Java技術沙龍隨筆薦Java
- 《持續交付》走進百度技術沙龍
- Docker之Docker Compose技術詳解。Docker
- 宜信OCR技術探索之版面分析業務實踐|技術沙龍直播速記
- 容器技術之Docker映象Docker
- Docker 容器學習Docker
- docker學習(二)Docker