docker(一)

 1、docker 概述linux

      Docker 是一個開源的應用容器引擎,讓開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,而後發佈到任何流行的 linux 機器上,也能夠實現虛擬化。容器是徹底使用沙箱機制,相互之間不會有任何藉口,幾乎沒有性能開銷,能夠很容易地在機器和數據中心運行。最重要的是,他們不依賴與任何語言、框架或者包裝系統。docker

  如今接觸的軟件是怎麼發佈的?shell

  windows 下的  2-16-office.exe,不能在 xp 上運行;mk.rpm 在 redhat 系統 linux 上運行,可是不能再其餘linux 版本上運行。如今發佈的軟件包和系統相關。數據庫

  LXC 爲 linux container 的簡寫,linux container 容器是一種內核虛擬化技術,能夠提供輕量級的虛擬化,以便隔離進程和資源,並且不須要提供指令解釋機制以及全虛擬化的其它複雜性。ubuntu

  LXC 主要經過來自 kernel 的 namespace 實現每一個用戶實例之間的相互隔離,經過cgroup 實現對資源的配額和度量。windows

 

總結:相對 VM 虛擬機,少了虛擬操做系統這一層,因此 docker 效率高。centos

 

2、工做流程。服務器

工做流程:服務器 A 上運行 docker Engine 服務,在 docker Engine 上啓動不少容器 container,從外網 Docker Hub 上把 image 操做系統鏡像下載下來, 放到 container 容器運行,這樣,一個容器實例就運行起來了。網絡

 

dockerhub:dockerhub 是 docker 官方的鏡像存儲站點,其中提供了不少鏡像提供用戶下載,如ubuntu,centos 等系統鏡像。須要用戶註冊一個帳號,在網站上建立一個 docker 倉庫。框架

 

3、Docker 核心技術

  一、Namespace  -- 實現 container 的進程,網絡,消息,文件系統和主機名的隔離。

  二、cgroup  --  實現對資源的配額和度量。

注:cgroup 的配額,能夠指定實例使用的 cpu 個數,內存大小等。

 

4、docker特性:

  • 文件系統隔離:每一個進程容器運行在一個徹底獨立的根文件系統裏。
  • 資源隔離:系統資源,像 CPU 和內存等能夠分配到不一樣的容器中,使用cgroup。
  • 網絡隔離:每一個進程容器運行在本身的網絡空間,虛擬接口和 IP 地址。
  • 日誌記錄:Docker 將會收集和記錄每一個進程容器的標準流(stdout/stderr/stdin),用於實例檢索或批量檢索。
  • 變動管理:容器文件系統的變動能夠提交到新的鏡像中,並可重複使用以建立更多的容器。無需使用模板或手動配置。
  • 交互式 shell:Docker 能夠分配一個虛擬終端並關聯到任何容器的標準輸入上,例如運行一個一次性交互shell。

5、優缺點

優勢:

  • 一些優點和 VM 同樣,但不是全部都同樣
  • 比 VM 小,比VM快,Docker 容器的尺寸減少相比整個虛擬機大大簡化了分佈到雲分發時間和開銷。Docker 啓動一個容器實例時間很短,一兩秒能夠啓動一個實例。
  • 對於在筆記本電腦,數據中心的虛擬機,以及任何雲上,運行相同的沒有變化的應用程序,IT 的發佈速度更快。
  • Docker 是一個開放平臺,構建,發佈和運行分佈式應用程序。
  • Docker 使應用程序可以快速從組件組裝和避免開發和生產環境之間的摩擦。
  • 能夠部署在公司局域網或雲虛擬機使用它
  • 開發人員並不關心具體哪一個linux操做系統
  • 使用docker,開發人員能夠根據全部依賴關係構建相應的軟件,針對他們選擇的操做系統。而後,在部署時一切是徹底同樣的,由於一切都在 dockerimage的容器上運行。

缺點:

  • docker 用於應用程序時是最有用的,但不包含數據,日誌,跟蹤和數據庫等一般應放在 docker 容器外,一個容器的鏡像一般都很小,不適合存大量數據,存儲能夠經過外部掛載的方式使用。好比使用NFS,ipsan,MFS等。一句話:docker 只計算,存儲交給別人。
相關文章
相關標籤/搜索