Docker入門知識總結-學習筆記1

Docker容器技術是基於Go語言實現的雲開源項目,誕生於2013年,是一種高效、敏捷、和輕量級的容器解決方案,發佈於2013年。Docker基於Linux平臺上的多項開源技術,其中最重要的就是Linux容器(Linux Containers,LXC)技術。python

5.PNG

Docker的優勢:linux

更快速的交付和部署。使用Docker,開發人員可使用鏡像來快速構建一套標準的開發環境;開發完成以後,測試和運維人員能夠直接使用徹底相同環境來部署代碼。只要開發測試過的代碼,就能夠確保在生產環境無縫運行。Docker能夠快速建立和刪除容器,實現快速迭代,大量節約開發、測試、部署的時間。而且,整個過程全程可見,使團隊更容易理解應用的建立和工做過程。nginx

更高效的資源利用。Docker容器的運行不須要額外的虛擬化管理程序(VirtualMachine Manager,VMM,以及Hypervisor)支持,它是內核級的虛擬化,能夠實現更高的性能,同時對資源的額外需求很低。跟傳統虛擬機方式相比,要提升一到兩個數量級。docker

更輕鬆的遷移和擴展。Docker容器幾乎能夠在任意的平臺上運行,包括物理機、虛擬機、公有云、私有云、我的電腦、服務器等,同時支持主流的操做系統發行版本。這種兼容性讓用戶能夠在不一樣平臺之間輕鬆地遷移應用。centos

更簡單的更新管理。使用Dockerfile,只須要小小的配置修改,就能夠替代以往大量的更新工做。而且全部修改都以增量的方式被分發和更新,從而實現自動化而且高效的容器管理。安全

Docker與虛擬機的比較:服務器

Docker容器很快,啓動和中止能夠在秒級實現,而傳統的虛擬機方式須要數分鐘。網絡

Docker容器對系統資源需求不多,一臺主機上能夠同時運行數千個Docker容器(在IBM服務器上已經實現了同時運行10K量級的容器實例)。架構

Docker經過相似Git設計理念的操做來方便用戶獲取、分發和更新應用鏡像,存儲複用,增量更新。app

Docker經過Dockerfile支持靈活的自動化建立和部署機制,提升工做效率,使流程標準化。

Docker容器除了運行其中應用外,基本不消耗額外的系統資源,保證應用性能的同時,儘可能減少系統開銷。傳統虛擬機方式運行N個不一樣的應用就要起N個虛擬機(每一個虛擬機須要單獨分配獨佔的內存、磁盤等資源),而Docker只須要啓動N個隔離的「很薄的」容器,並將應用放進容器內便可。應用得到的是接近原生的運行性能。

在隔離性方面,傳統的虛擬機方式提供的是相對封閉的隔離。但這並不意味着Docker就不安全,Docker利用Linux系統上的多種防禦技術實現了嚴格的隔離可靠性,且能夠整合衆多安全工具。從1.3.0版本開始,Docker重點改善了容器的安全控制和鏡像的安全機制,極大提升了使用Docker的安全性。在已知的大規模應用中,目前還沒有出現值得擔心的安全隱患。

Docker體系結構:

Docker使用C/S架構,docker daemon做爲server端接受client端的請求,而後進行處理。server端和client端也能夠運行在同一個機器上,使用socket或者RESTful API進行通訊。server端也就是docker daemon運行在主機的後臺,client以系統命令的形式存在,用戶用docker命令來跟docker daemon 交互。用戶經過輸入docker命令能夠管理docker的鏡像、容器、網絡和數據卷。

4.PNG

Docker三大核心概念:

一、鏡像(Docker images)

Docker鏡像是Docker容器運行時的只讀模板,鏡像能夠用來建立Docker容器。每個鏡像由一系列的層 (layers) 組成。Docker使用UnionFS(聯合文件系統)來將這些層聯合到單獨 的鏡像中。UnionFS容許獨立文件系統中的文件和文件夾(稱之爲分支)被透明覆蓋,造成一個單獨連貫的文件系統。正由於有了這些層的存在,Docker是如此的輕量。當你改變了一個Docker鏡像,好比升級到某個程序到新的版本,一個新的層會被建立。所以,不用替換整個原先的鏡像或者從新創建(在使用虛擬機的時候你可能會這麼作),只是一個新的層被添加或升級了。如今你不用從新發布整個鏡像,只須要升級,層使得分發Docker 鏡像變得簡單和快速。

例如:在centos鏡像中安裝nginx,就成了「nginx鏡像」,其實就是在底層的一個centos操做系統鏡像上加一個nginx層,就完成了一個nginx鏡像的構建。此時咱們通常centos操做系統鏡像稱爲nginx鏡像層的父鏡像。

二、容器(Docker containers)

Docker利用容器來運行應用,一個Docker容器包含了全部的某個應用運行所須要的環境。每個Docker容器都是從Docker鏡像建立的,是經過鏡像建立的運行實例。Docker容器能夠運行、開始、中止、移動和刪除。每個Docker容器都是獨立和安全的應用平臺,彼此 相互隔離、互不可見。

三、倉庫(Docker repository)

Docker倉庫其實就是存放Docker images的地方。而另外有一個概念叫作註冊服務器(Registry),一個註冊服務器上能夠有多個倉庫。一個倉庫通常存放着一類鏡像,這些鏡像經過自身不一樣的Tag(標籤)進行區分。

3.PNG

Docker的兩個核心底層技術:

一、名稱空間(Namespace)

上面說到Docker的隔離性,其實名稱空間就是在Docker中用來隔離容器的主要技術。

1) pid namespace

用來隔離不一樣用戶的進程

2)net namespace

隔離容器的網路

3)IPC namespace

由於容器中進程交互仍是採用linux常見的進程間交互方法 (interprocess communication - IPC),包括常見的信號量、消息隊列和共享內存

4)mnt namespace

相似chroot,將進程放在特定目錄執行。容許不一樣namespace的 進程看到的文件結構不一樣

5)uts namespace

容許每一個container擁有獨立的hostname和 domain name, 使其在網絡上能夠被視做一個獨立的節點而非Host上的一個進程。

6)user namespace

使得每一個container能夠有不一樣的user和group id

二、cgroups(Control groups)

cgoups實際上是將全部進程放到一個組裏面統一管理的機制。主要提供了資源限制、優先級分配、資源統計、進程控制的做用。


Docker的安裝:

環境:centos7的維護版、centos-extras倉庫須要激活、使用overlay2 存儲驅動

一、yum remove docker docker­client docker­client­latest docker­common docker­latest docker­latest­logrotate docker­logrotate docker­selinux docker­engine­selinux docker­engine
卸載舊版本的Docker
二、yum install ­y yum­utils device­mapper­persistent­data lvm2
安裝使用yum-config-manager命令
三、yum-config-manager --add-repo 
使用官方源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
使用國內源(建議國內源,官網的可能會慢)
四、yum install docker-ce
安裝
五、systemctl start docker
docker run helloword
測試

Docker官方文檔:docs.docker.com

相關文章
相關標籤/搜索