Docker容器基礎

前言

統稱來講,容器是一種工具,指的是能夠裝下其它物品的工具,以方便人類概括放置物品、存儲和異地運輸,具體來講好比人類使用的衣櫃、行李箱、揹包等能夠成爲容器,但今天咱們所說的容器是一種IT技術。
    容器技術是虛擬化、雲計算、大數據以後的一門新興的而且是煊赫一時的新技術,容器技術提升了硬件資源利用率、方便了企業的業務快速橫向擴容、實現了業務宕機自愈功能,所以將來數年會是一個容器愈發流行的時代,這是一個對於IT行業來講很是有影響和價值的技術,而對於IT行業的從業者來講,熟練掌握容器技術無疑是一個頗有前景的的行業工做機會。

Docker簡介

一、什麼是Docker:
    首先Docker是一個在2013年開源的應用程序而且是一個基於go語言編寫是一個開源的pass服務(Platform as a Service,平臺即服務的縮寫),go語言是由google開發,docker公司最先叫dotCloud後因爲Docker開源後大受歡迎就將公司更名爲 Docker Inc,總部位於美國加州的舊金山,Docker是基於linux 內核實現,Docker最先採用LXC技術(LinuX Container的簡寫,LXC是Linux 原生支持的容器技術,能夠提供輕量級的虛擬化,能夠說 docker 就是基於 LXC 發展起來的,提供 LXC 的高級封裝,發展標準的配置方法),而虛擬化技術KVM(Kernel-based Virtual Machine) 基於模塊實現,Docker後改成本身研發並開源的runc技術運行容器。
    Docker 相比虛擬機的交付速度更快,資源消耗更低,Docker 採用客戶端/服務端架構,使用遠程API來管理和建立Docker容器,其能夠輕鬆的建立一個輕量級的、可移植的、自給自足的容器,docker 的三大理念是build(構建)、ship(運輸)、 run(運行),Docker聽從aoache 2.0協議,並經過(namespace及cgroup等)來提供容器的資源隔離與安全保障等,因此Docke容器在運行時不須要相似虛擬機(空運行的虛擬機佔用物理機6-8%性能)的額外資源開銷,所以能夠大幅提升資源利用率,總而言之Docker是一種用了新穎方式實現的輕量級虛擬機.相似於VM可是在原理和應用上和VM的差異仍是很大的,而且docker的專業叫法是應用容器(Application Container)。

二、docker的組成:
    2.一、Docker 客戶端(Client):客戶端使用docker 命令或其餘工具調用docker API。
    2.二、Docker 服務端(Server):Docker守護進程,運行docker容器。
    2.三、Docker 鏡像(Images):鏡像能夠理解爲建立實例使用的模板。
    2.四、Docker 容器(Container): 容器是從鏡像生成對外提供服務的一個或一組服務。
    2.五、Docker 倉庫(Registry): 保存鏡像的倉庫,相似於git或svn這樣的版本控制系統,官方倉庫: https://hub.docker.com/
    2.六、Docker 主機(Host):一個物理機或虛擬機,用於運行Docker服務進程和容器

三、Docker在開發和運維中的優點:
    3.一、更快速的交付和部署
    3.二、更高的資源利用
    3.三、更輕鬆的遷移和擴展
    3.四、更簡單的更新管理

四、Docker與虛擬機比較
    4.一、Docker容器很快,啓動和中止能夠在秒級實現,這相比傳統的虛擬機方式(數分鐘)要快不少
    4.二、Docker容器對系統資源需求不多,一臺主機上能夠同時運行數千個Docker容器。
    4.三、Docker經過相似Git設計理念的操做來方便用戶獲取、分發和更新應用鏡像,存儲複用,增量更新
    4.四、Docker經過Dockerfile支持靈活的自動化建立和部署機制,以提升工做效率,並標準化流程。
    4.五、Docker容器除了運行其中的應用外,基本不消耗額外的系統資源,在保證應用性能的同時,儘可能減小系統開銷。傳統虛擬機方式運行N個不一樣的應用就要啓動N個虛擬機(每一個虛擬機單獨分配獨佔的內存、磁盤等資源),而Docker只須要啓動N個隔離的「很薄的」容器,並將應用放進容器內便可。

Docker容器基礎

核心概念

docker的三大核心概念:
        鏡像
        容器
        倉庫
只有理解了這三個核心概念,才能順利地理解docker容器的整個生命週期。
docker大部分的操做都圍繞着它的三大核心概念:鏡像、容器、倉庫。準確把握這三大核心概念對掌握docker技術尤其重要。

docker鏡像:
        docker鏡像相似於虛擬機鏡像,能夠將它理解爲一個只讀的模版。
        例如,一個鏡像能夠包含一個基本的操做系統環境,裏面僅安裝了Apache應用程序或者其餘須要的軟件。能夠把它稱爲一個Apache鏡像。
        鏡像是建立docker容器的基礎。
        經過版本管理和增量的文件系統,docker提供了一套十分簡單的機制來建立和更新現有的鏡像,用戶甚至能夠從網上下載一個已經作好的應用鏡像,並直接使用。

docker容器:
        docker容器相似於一個輕量級的沙箱,docker利用容器來運行和隔離應用。
        容器是從鏡像建立的應用運行實例,他能夠啓動、開始、中止、刪除、而這些容器都是彼此相互隔離、互不可見的。
        能夠把容器看做一個簡易版的Linux系統環境(包括root用戶權限、進程空間、用戶空間和網絡空間等)以及運行在其中的應用程序打包而成的盒子
    注意:鏡像自身是隻讀的,容器鏡像啓動的時候,會在鏡像的最上層建立一個可寫層。

docker倉庫:
        docker倉庫相似於代碼倉庫,是docker集中存放鏡像文件的場所。 
        根據所存儲的鏡像公開分享與否,docker倉庫能夠分爲兩類:
            公開倉庫
            私有倉庫
docker引擎:
    docker引擎是使用docker容器的核心組件,能夠在主流的操做系統和雲平臺上使用。包括Linux操做系統(如Ubuntu、Debian、centos、Redhat等),macOS和Windows操做系統,以及IBM、亞馬遜、微軟等知名雲平臺。
    目前docker支持docker引擎、docker hub、docker cloud等多種服務。
    docker引擎:
        包括支持在桌面系統或雲平臺安裝docker,以及爲企業提供簡單安全彈性的容器集羣編排和管理;
    dockerhub:
        官方提供的雲託管服務,能夠提供共有或者私有的鏡像倉庫
    dockercloud:
        官方提供的容器雲服務,能夠完成容器的部署與管理,能夠完整地支持容器化項目,還有 CI、CD 功能。

    docker引擎目前分爲兩個版本:
        社區版本(Community Edition, CE)
        企業版本(Enterprise Edition, EE)
相關文章
相關標籤/搜索