模塊二十_Docker容器虛擬化技術

序言:

文章內(nèi)容輸出來源:拉勾教育Java高薪訓練營。
本篇文章是學習課程中的一部分課后筆記

一、 Docker 介紹、概念

1. Docker 介紹
  • Docker是基于Go語言實現(xiàn)的開源容器項目,誕生于2013年年初,最 初發(fā)起者是dotCloud公司(Docker Inc)、Docker項目已加入了Linux基金會,并遵循Apache2.0協(xié)議,全部開源代碼均在https://github.com/docker/docker上進行維護。
    Docker首次為應用的開發(fā)、運行和部署提供了“一站式”的實用解決方案。

  • Linux容器技術(LXC)
    早期的Docker是基于Linux容器技術(Linux Containers,LXC)的。
    最早的容器技術可以追溯到1982 年Unix系列操作系統(tǒng)上的chroot工具(直到今天,主流的Unix、Linux操 作系統(tǒng)仍然支持和帶有該工具)。
    早期的容器實現(xiàn)技術包括Sun Solaris 操作系統(tǒng)上的Solaris Containers(2004年發(fā)布),F(xiàn)reeBSD操作系統(tǒng)上的 FreeBSD jail(2000年左右出現(xiàn)),以及GNU/Linux上的Linux-VServer和 OpenVZ。

  • 從Linux容器到Docker
    在LXC的基礎上,Docker進一步優(yōu)化了容器的使用體驗Docker提供了各種容器管理工具(如分發(fā)、版本、移植等)讓用戶無需關注底層的操作,可以更簡單明了地管理和使用容器Docker通過引入分層文件系統(tǒng)構建(aufs)和高效的鏡像機制,降低了遷移難度,極大地提升了用戶體驗。
    自0.9版本開始,Docker 開發(fā)了libcontainer項目,作為更廣泛的容器驅動實現(xiàn),從而替換掉了LXC的實現(xiàn)。

2. Docker的應用場景
  • 快速,一致地交付應用程序、鏡像打包環(huán)境,避免了環(huán)境不一致的問題Docker可以為開發(fā)人員提供 標 準化 的本地工作環(huán)境給應用程序和服務,從而簡化了開發(fā)生命周期。容器非常適合持續(xù)集成和持續(xù)交付(CI / CD)工作流程
    如果有以下場景可以使用Docker交付:
    • 開發(fā)人員在本地編寫代碼,并使用Docker容器與其他同事共享勞動成果。
    • 使用Docker將應用程序推送到測試環(huán)境中,并執(zhí)行自動和手動測試。
    • 當開發(fā)人員發(fā)現(xiàn)錯誤時,他們可以在開發(fā)環(huán)境中對其進行修復,然后將其重新部署到測試環(huán)境中以
      進行測試和驗證。
    • 測試完成后,將修補程序推送給生產(chǎn)環(huán)境就像將更新的鏡像推送到生產(chǎn)環(huán)境一樣簡單。
  • 響應式部署和擴展 Docker是基于容器的平臺允許高度可移植的工作負載。Docker容器可以在開發(fā)人員的本地筆記本電腦上,數(shù)據(jù)中心中的物理或虛擬機上,云提供商上或混合環(huán)境中運行。 Docker的可移植性和輕量級的特性還使可以輕松地動態(tài)管理工作負載,并根據(jù)業(yè)務需求指示實時擴展或拆除應用程序和服務。
  • 在同一個硬件上運行更多工作負載 Docker輕巧快速。它為基于虛擬機管理程序的虛擬機提供了可行,經(jīng)濟高效的替代方案,因此我們可以利用更多的計算能力來實現(xiàn)業(yè)務目標。Docker非常適合于高密度環(huán)境以及中小型部署,而需要用更少的資源做更多的事情。
3.Docker與虛擬機比較
  • 3.1 虛擬化

虛擬化技術就是在操作系統(tǒng)上多加了一個虛擬化層(Hypervisor),可以將物理機的CPU、內(nèi)存、硬盤、網(wǎng)絡等資源進行虛擬化,再通過虛擬化出來的空間上安裝操作系統(tǒng),構建虛擬的應用程序執(zhí)行環(huán)境。這就是我們通常說的虛擬機。
比如:VMware 、VirtualBox、KVM等。

  • 虛擬化技術的優(yōu)點:
    提升IT效率
    降低運維成本
    更快地部署工作負責
    提高應用性能
    提高服務器可用性
    消除服務器梳理劇增情況和復雜性

  • 虛擬機的缺點:
    占用資源較多
    性能較差
    擴展能力較差
    環(huán)境遷移能力較差

  • 3.2 容器化
    借鑒了集裝箱的解決方案,提出了類似集裝箱的方式封裝應用以及它的運行環(huán)境,將應用和環(huán)境打包成一個輕量化、可移植、自包含的容器。
    容器是輕量級的,因為它們不需要虛擬機管理程序的額外負載,而是直接在主機的內(nèi)核中運行。
    這意味著與使用虛擬機相比,可以在給定的硬件組合上運行更多的容器。
    甚至可以在實際上是虛擬機的主機中運行Docker容器
  • 容器有四個特點:
    容器共享宿主機內(nèi)核
    容器使用內(nèi)核的功能對進程進行分組和資源限制
    容器通過命名空間保證隔離
    容器像是輕量級的VM(占用空間更少,速度更快),但不是虛擬機
對比.png

二、 Docker核心組件

1. Docker引擎

Docker使用客戶端-服務器架構;
Docker客戶端是用戶與Docker交互的主要方式,與Docker守護進程(Docker引擎)進行通信該守護進程完成了構建,運行和分發(fā)Docker容器的繁重工作;
Docker客戶端和守護程序可以在同一系統(tǒng)上運行,也可以將Docker客戶端連接到遠程Docker守護程序;
Docker客戶端和守護程序在UNIX套接字或網(wǎng)絡接口上使用REST API進行通信;
Docker守護進程偵聽Docker API請求并管理Docker對象,例如鏡像,容器,網(wǎng)絡和卷等,守護程序還可以與其他守護程序通信以管理Docker服務。

2. Docker鏡像

Docker鏡像類似于虛擬機鏡像,可以將它理解為一個只讀的模板。
鏡像是基于聯(lián)合(Union)文件 系統(tǒng)的一種層式的結構,由一系列指令一步一步構建出來。
比如:
添加一個文件;
執(zhí)行一個命令;
打開一個端口。
鏡像是創(chuàng)建Docker容器的基礎。通過版本管理和增量的文件系統(tǒng), Docker提供了一套十分簡單的機制來創(chuàng)建和更新現(xiàn)有的鏡像,用戶可以從網(wǎng)上下載一個已經(jīng)做好的應用鏡像,并直接使用我們可以利用Dockerfile構建自己的鏡像。

3. Docker容器

Docker容器類似于一個輕量級的沙箱,Docker利用容器來運行和隔離應用。
容器是鏡像的一個運行實例。
可以將其啟動、開始、停止、刪除,而這些容器都是彼此相互隔離的、互不可見的。 可以把容器看做是一個簡易版的Linux系統(tǒng)環(huán)境(包括root用戶權限、進程空間、用戶空間和網(wǎng)絡空間等)以及運行在其中的應用程序打包而成的盒子。
容器是基于鏡像啟動起來的,容 器中可以運行一個或多個進程。
鏡像是Docker生命周期 中的構建或打包階段,而容器則是啟動或執(zhí)行階段。
鏡像自身是只讀的。容器從鏡像啟動的時候,會在鏡像的最上層創(chuàng)建一個可寫層。

4. Docker倉庫

Docker倉庫類似于代碼倉庫,它是Docker集中存放鏡像文件的場所。
倉庫注冊服務器(Registry)是存放倉庫的地方,其上往往存放著多個倉庫,每個倉庫集中存放某一類鏡像,往往包 括多個鏡像文件,通過不同的標簽(tag)來進行區(qū)分;
根據(jù)所存儲的鏡像公開分享與否,Docker倉庫可以分為公開倉庫 (Public)和私有倉庫(Private)兩種形式。
目前,最大的公開倉庫是 官方提供的Docker Hub,其中存放了數(shù)量龐大的鏡像供用戶下載。國內(nèi)不少云服務提供商(如時速云、阿里云等)也提供了倉庫的本地源,可以提供穩(wěn)定的國內(nèi)訪問。Docker也支持用戶在本地網(wǎng)絡內(nèi)創(chuàng)建一個只能自己訪問的私有倉庫。

倉庫.png
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容