Docker簡(jiǎn)介和安裝

一、Docker簡(jiǎn)介
1.1 docker是什么
【問題】:?jiǎn)柺裁磿?huì)有docker出現(xiàn)
Docker的出現(xiàn) 使得Docker得以打破過去「程序即應(yīng)用」的觀念。透過鏡像(images)將作業(yè)系統(tǒng)核心除外,運(yùn)作應(yīng)用程式所需要的系統(tǒng)環(huán)境,由下而上打包,達(dá)到應(yīng)用程式跨平臺(tái)間的無縫接軌運(yùn)作。
【docker理念】:解決了運(yùn)行環(huán)境和配置問題的軟件容器,方便持續(xù)繼承并有助于整體發(fā)布的容器虛擬化技術(shù)。
1.2 能干什么
1.2.1 技術(shù)職級(jí)變化
coder -> programmer -> software engineer -> DevOps engineer
1.2.2 開發(fā)/運(yùn)維(Devops)新一代開發(fā)工程師
一次構(gòu)建、隨處運(yùn)行
更快速的應(yīng)用交付和部署
更便捷的升級(jí)和擴(kuò)縮容
更簡(jiǎn)單的系統(tǒng)運(yùn)維
更高效的計(jì)算資源利用

1.3?下載地址
官網(wǎng):http://www.docker.com
Docker Hub 官網(wǎng):https://hub.docker.com
二、Docker安裝
2.1 前提說明
2.1.1 CentOS Docker 安裝
2.1.2 前提條件
目前,CentOS僅發(fā)行版本中的內(nèi)核支持Docker。Docker運(yùn)行在CentOS 7(64-bit)上,要求系統(tǒng)為64位,Linux系統(tǒng)內(nèi)核版本為3.8以上,這里選用Centos7.x
2.1.3 查看自己的內(nèi)核
uname 命令用于打印當(dāng)前系統(tǒng)相關(guān)信息(內(nèi)核版本號(hào),硬件架構(gòu),主機(jī)名稱和操作系統(tǒng)類型等)。
2.2 Docker的基本組成
2.2.1 鏡像(image)
Docker 鏡像(Image)就是一個(gè) 只讀 的模板。鏡像可以用來創(chuàng)建 Docker 容器, 一個(gè)鏡像可以創(chuàng)建很多容器 。
它也相當(dāng)于是一個(gè)root文件系統(tǒng)。比如官方鏡像 centos:7 就包含了完整的一套 centos:7 最小系統(tǒng)的 root 文件系統(tǒng)。
相當(dāng)于容器的“源代碼”, docker鏡像文件類似于Java的類模板,而docker容器實(shí)例類似于java中new出來的實(shí)例對(duì)象。
2.2.2 容器(container)
從面向?qū)ο蠼嵌?
Docker 利用容器(Container)獨(dú)立運(yùn)行的一個(gè)或一組應(yīng)用,應(yīng)用程序或服務(wù)運(yùn)行在容器里面,容器就類似于一個(gè)虛擬化的運(yùn)行環(huán)境, 容器是用鏡像創(chuàng)建的運(yùn)行實(shí)例 。就像是Java中的類和實(shí)例對(duì)象一樣,鏡像是靜態(tài)的定義,容器是鏡像運(yùn)行時(shí)的實(shí)體。容器為鏡像提供了一個(gè)標(biāo)準(zhǔn)的和隔離的運(yùn)行環(huán)境 ,它可以被啟動(dòng)、開始、停止、刪除。每個(gè)容器都是相互隔離的、保證安全的平臺(tái)
從鏡像容器角度
可以把容器看做是一個(gè)簡(jiǎn)易版的 *Linux* 環(huán)境 (包括root用戶權(quán)限、進(jìn)程空間、用戶空間和網(wǎng)絡(luò)空間等)和運(yùn)行在其中的應(yīng)用程序。
2.2.3 倉庫(repository)
倉庫(Repository)是 集中存放鏡像 文件的場(chǎng)所。
類似于
Maven倉庫,存放各種jar包的地方;
github倉庫,存放各種git項(xiàng)目的地方;
Docker公司提供的官方registry被稱為Docker Hub,存放各種鏡像模板的地方。
倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式。
最大的公開倉庫是 Docker Hub(https://hub.docker.com/) ,
存放了數(shù)量龐大的鏡像供用戶下載。國內(nèi)的公開倉庫包括阿里云 、網(wǎng)易云等
2.2.4 小總結(jié)
需要正確的理解倉庫/鏡像/容器這幾個(gè)概念:
Docker 本身是一個(gè)容器運(yùn)行載體或稱之為管理引擎。我們把應(yīng)用程序和配置依賴打包好形成一個(gè)可交付的運(yùn)行環(huán)境,這個(gè)打包好的運(yùn)行環(huán)境就是image鏡像文件。只有通過這個(gè)鏡像文件才能生成Docker容器實(shí)例(類似Java中new出來一個(gè)對(duì)象)。image文件可以看作是容器的模板。Docker 根據(jù) image 文件生成容器的實(shí)例。同一個(gè) image 文件,可以生成多個(gè)同時(shí)運(yùn)行的容器實(shí)例。
鏡像文件
image 文件生成的容器實(shí)例,本身也是一個(gè)文件,稱為鏡像文件。
容器實(shí)例
一個(gè)容器運(yùn)行一種服務(wù),當(dāng)我們需要的時(shí)候,就可以通過docker客戶端創(chuàng)建一個(gè)對(duì)應(yīng)的運(yùn)行實(shí)例,也就是我們的容器 。
倉庫
就是放一堆鏡像的地方,我們可以把鏡像發(fā)布到倉庫中,需要的時(shí)候再從倉庫中拉下來就可以了。
2.3.2 整體架構(gòu)及底層通信原理簡(jiǎn)述
Docker是一個(gè)C/S模式的架構(gòu),后端是一個(gè)松耦合架構(gòu),眾多模塊各司其職
2.3.3 Docker運(yùn)行的基本流程為:
用戶是使用Docker Client 與Docker Daemon 建立通信,并發(fā)送請(qǐng)求給后者。
Docker Daemon 作為Docker架構(gòu)中的主體部分,首先提供Docker Server 的功能時(shí)期可以接受 Docker Client的請(qǐng)求。
Docker Engine 執(zhí)行Docker內(nèi)部的一些列工作,每一項(xiàng)工作都是以一個(gè)Job的形式的存在。
Job的運(yùn)行過程中,當(dāng)需要容器鏡像是,則從Docker Register中下載鏡像,并通過鏡像管理驅(qū)動(dòng)Graph driver 將下載鏡像以Graph的形式存儲(chǔ)。
當(dāng)需要為Docker創(chuàng)建網(wǎng)絡(luò)環(huán)境時(shí),通過網(wǎng)絡(luò)驅(qū)動(dòng)Network driver創(chuàng)建并配置Docker容器網(wǎng)絡(luò)環(huán)境。
當(dāng)需要限制Docker容器運(yùn)行資源或執(zhí)行用戶指令等操作時(shí),則通過Exec driver來完成。
Libcontainer是一項(xiàng)獨(dú)立的容器管理包,Network driver以及Exec driver都是通過Libcontainer來實(shí)現(xiàn)具體容器進(jìn)行的操作。
2.4、安裝步驟
2.4.1 CentOS7安裝Docker