Docker-01-容器技術和Docker簡介

 1、容器技術

1.1 容器技術的歷史

一、在最開始,全部服務都時直接部署在物理機上的,具備以下缺點:git

  • 部署很是慢
  • 成本很是高
  • 資源浪費
  • 難於遷移和擴展
  • 可能會被限定硬件廠商

二、以後出現虛擬化技術,虛擬機經過Hypervisor層實現資源的調度web

  • 一個物理機能夠部署多個app
  • 每一個app運行在一個虛擬機裏面

虛擬化的優勢:docker

  • 資源池:一個物理機的資源分配到了不一樣的虛擬機裏
  • 很容器擴展:容器增長物理機和虛擬機
  • 很容易雲化:AWS,阿里雲等

虛擬化的侷限性:數據庫

  • 每個虛擬機都是一個完整的操做系統,要給其分配資源。當虛擬機數量增多時,操做系統自己消耗的資源勢必增多!

三、容器技術的出現安全

 什麼是容器技術?架構

  •  對軟件和其依賴的標準化打包
  • 應用之間相互隔離,效果略低於虛擬機之間的隔離
  • 共享一個OS Kernel
  • 能夠運行在不少主流操做系統上

容器和虛擬機的區別:app

容器解決了什麼問題?運維

  • 提供app的打包,環境一致性的問題!!
  • 解決了開發和運維之間的矛盾

容器技術的發展歷程:性能

2、Docker簡介

2.1 什麼是docker?

  • Docker是容器技術的一種實現!
  • Docker 是基於Go語言實現的開源項目,誕生於2013年初,最初的發起者dotClound公司,Docker天然開源後受到普遍關注;
  • Docker項目目前已經加入Linux的基金會,遵循Apache2.0協議,所有開源代碼均在https://gitHub.com/docker/docker上;
  • Linux的操做系統的支持:Redhat RHEL 6.5/CentOS 6.5往上的操做系統,Ubuntu14.04操做系統,都默認帶有docker的安裝包;
  • 與Docker的合做方:Google的PaaS(platform as a Service)平臺及服務產品,微軟的雲平臺Azure,亞馬遜的AWS EC2 Container
  • Docker 的主要目的:Build、Ship and Run Any APP Anywhere,即經過對應用組件的封裝(Packing)、分發(Dispatcher)、部署(Deployment) 、運行(Runtime) 等生命週期的管理,達到一次封裝處處運行;
  • 組件能夠是一個web的應用,也能夠是一套數據庫,甚至是一個操做系統;
  • Docker 基於Linux的多項開源技術提供了高效敏捷和輕量級的容器方案,而且支持多種主流平臺(Paas) 和本地系統上的部署。

 2.2 docker與虛擬機比較

特性 容器 虛擬機
啓動速度 秒級 分鐘級
硬盤使用 通常MB 通常GB
性能 接近原生 相對弱於
系統支持 單機支持上千個容器 通常幾十個
隔離性 安全隔離 徹底隔離

2.3 docker的引擎

docker引擎是一個c/s結構的應用:ui

  • Server是一個常駐進程;
  • REST API 實現了client和server間的交互協議;
  • CLI實現容器和鏡像的管理,爲用戶提供統一的操做界面。

2.4 docker的架構

Docker使用C/S架構,Client 經過接口與Server進程通訊實現容器的構建,運行和發佈。client和server能夠運行在同一臺集羣,也能夠經過跨主機實現遠程通訊。

2.5 docker的核心概念

  • 鏡像(Image)

  鏡像是隻讀的,鏡像中包含須要運行的文件(提供容器運行時所需的程序、庫、資源、配置等文件,還包含了一些爲運行時準備的一些配置參數)。鏡像用來建立container,一個鏡像能夠運行多個container;鏡像能夠經過Dockerfile建立,也能夠從Docker hub/registry上下載。

  • 容器(Container)

  Docker的運行組件,啓動一個鏡像就是一個容器,容器是一個隔離環境,多個容器之間不會相互影響,保證容器中的程序運行在一個相對安全的環境中。

  • 倉庫(Repository)

  從認識上來講,就好像軟件包上傳下載站,有各類軟件的不一樣版本被上傳供用戶下載,共享和管理Docker鏡像,官方地址爲:https://registry.hub.docker.com/

2.6 Docker底層核心技術

一、Namespaces

  • 作隔離pid,net,ipc,mnt,uts

二、Control groups

  • 作資源限制

三、Union file systems

  • 作Container和image分層

 

參考文章:https://blog.csdn.net/huangjun0210/article/details/85680586#2_Docker_10

相關文章
相關標籤/搜索