docker架構和底層技術

原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!
原文連接地址:『中級篇』docker架構和底層技術(12)linux

前11節主要是介紹docker的安裝,若是跟這我來學我相信你們已經有了一個docker的安裝環境,本次是看下docker的架構和底層的技術,其實隨着各位老鐵的學習我相信對於docker架構和底層技術會愈來愈深刻的瞭解,特別是底層技術,後面會邊用邊給你們介紹底層的linux的技術。ios

Docker平臺

  • Docker提供了一個平臺,打包,運行的app的平臺
  • 把application和底層的infrastructure(基礎建設)隔離開來

Docker Engine

  1. 最核心的是 Docker Daemon咱們稱之爲Docker守護進程,也就是Server端,Server端能夠部署在遠程,也能夠部署在本地,由於Server端與客戶端(Docker Client)是經過Rest API進行通訊。
  2. REST 作過web開發都瞭解,它的效率槓槓的。
  3. docker CLI 實現容器和鏡像的管理,爲用戶提供統一的操做界面,這個 客戶端提供一個只讀的鏡像,而後經過鏡像能夠建立一個或者多個容器。(container),這些容器能夠只是一個RFS(Root File System),也能夠是一個包含了用戶應用的RFS。容器在docker Client中只是一個進程,兩個進程是互不可見的。用戶不能與server直接交互,但能夠經過與容器這個橋樑來交互,因爲是操做系統級別的虛擬技術,中間的損耗幾乎能夠不計。
  4. 其實docker就是個C/S的架構,有client和server的。
  • Docker守護進程(dockerd)
  • REST API server
  • CLI接口

Docker的組織架構


Docker的底層技術支持

容器=cgroup+namespace+rootfs+容器引擎(用戶態工具LXC)git

  • Cgroup(資源控制)
  • Namespace(訪問隔離)
  • rootfs(文件系統隔離)
  • 容器引擎(生命週期控制)


PS:這裏面不少底層的技術,說實話,仍是感受不須要那麼急着瞭解這些底層linux的技術,隨着我們慢慢對docker深刻認識,裏面的技術細節也會展開深刻的的說。github

Docker瞎扯淡

有初學者還在問,docker都出了這麼多課程了,可否通俗易懂的說下,我就在baidu找了一些內容分享出來,文章也是轉載的,寫的互聯網。web

首先你有一個 100 平方的房子(服務器),已知你(PHP 應用)須要吃喝拉撒睡覺,因此整個房子劃分了臥室、廚房、衛生間等,而後供你一我的享用,但其實挺浪費的,你一我的並不須要 100 平方這麼大,可能須要 20 平方(服務器佔用 20%)就行了。docker

後來又來了個別人(Java 應用)也被安排到了這個房子裏生活,他也須要吃喝拉撒睡,因此大家擠在了一個牀上,用一個衛生間(好比 http 服務器)。若是你改了你的習慣(例如 http 服務配置項)一樣會影響別人的生活。bash

後來又來了人(Node 應用),這時候房東發現房子不夠大了,因此搬家(遷移、升級服務器)到另外一個 150 平的房子,可是搬家成本好高。因爲戶型不一樣(系統版本、環境等)須要裝修很久,此外還要把住戶(應用代碼)搬過來,還須要把住戶自定義的習慣都帶過來簡直麻煩死了。服務器

這時候,房東瞭解到了一個叫 Docker 的產品。架構

Docker 是一個可自由伸縮的集裝箱房屋:app


這個集裝箱房屋雖小可是五臟俱全,並且能夠知足一切用戶需求,並支持高度自定義,好比 Node 這位住戶不須要廚房,那麼他的集裝箱房子就小一點,固然房租(服務器消耗)也便宜一些。

房東用了 Docker 這個產品以後,發現租房這個事情變簡單了:

  • 房東不須要劃分衛生間、廚房、臥室並進行裝修了,一切由用戶本身定製集裝箱。房東只須要把集裝箱放到房間裏便可。
  • 住戶也不須要打架了,之前一塊兒付房租(消耗服務器資源),如今按照本身集裝箱大小付費。並且你能夠在你集裝箱裏面隨便折騰,愛怎麼改配置就怎麼改,也不會影響到別人。
  • 集裝箱對於空間的使用,更加直觀,房東能夠更輕鬆瞭解到當前房間的空間使用率等,以便升級房間。
  • 房東搬新家的時候也開心了,只要把一面牆炸開,把裏面一個個集裝箱直接移過去新房子就行了,啥也不須要配置,都在集裝箱裏面呢。

扯完了:

  • 你就是房東,作運維的。房間是服務器,空間大小表示服務器硬件配置。
  • 住戶就是你的業務、應用,提供服務的。
  • 伸縮集裝箱房屋,就是 Docker 容器,裏面是徹底分離、獨立、自由的環境和業務代碼。你能夠在裏面裝一個 Ubuntu(消耗大)或者簡版的、能夠跑業務代碼的環境(消耗低)。
  • Docker 抹平系統差別,至關於把你多個房間都砸成長方形方便存放集裝箱。這樣你能夠快速把獨立容器丟到各個配置了 Docker 的不一樣系統、硬件配置的服務器上面。
  • 所以也能夠獲得很高的伸縮性,能夠瞬間部署不少服務器不少容器,而後負載均衡來提供大促服務等。
  • 固然 Docker 概念、功能不僅是我上面說的這些,這些只是我認爲比較核心關鍵的。

開始新的征程

源碼的路徑:github.com/limingios/d…

  • 目錄結構:

vagrant plugin install vagrant-vbguest
vagrant reload --provision
vagrant up
複製代碼



建立完畢

#進入虛擬機
vagrant ssh
sudo docker version
複製代碼


我的網站:IT人故事會 idig8.com
PS:開始實踐了,歡迎你們持續關注。

image
相關文章
相關標籤/搜索