簡述
Docker 是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。
容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口(類似 iPhone 的 app)。幾乎沒有性能開銷,可以很容易地在機(jī)器和數(shù)據(jù)中心中運(yùn)行。最重要的是,他們不依賴于任何語言、框架包括系統(tǒng)。
Docker是什么?
Docker是基于Go語言實(shí)現(xiàn)的云開源項(xiàng)目,誕生于2013年初,最初是dotCloud公司發(fā)起。
Docker通過對(duì)應(yīng)用組件的封裝、分發(fā)、部署、運(yùn)行等生命周期的管理,達(dá)到應(yīng)用組件級(jí)別的“一次封裝,到處運(yùn)行”。這里的 應(yīng)用組件,即可以是Web應(yīng)用,也可以是一套數(shù)據(jù)庫服務(wù),甚至是一個(gè)操作系統(tǒng)或編譯器。
Docker由鏡像(Image)、容器(Container)、倉庫(Repository) 三大核心組成。
為什么要用Docker?
更快速的交付和部署(使用docker,開發(fā)人員可以用鏡像來快速構(gòu)建一套標(biāo)準(zhǔn)的開發(fā)環(huán)境;開發(fā)完成之后,測(cè)試和運(yùn)維人員可以直接使用相同環(huán)境來部署代碼。)
更輕松的遷移和擴(kuò)展(docker容器幾乎可以在任意平臺(tái)上運(yùn)行,包括物理機(jī)、虛擬機(jī)、公有云、私有云、個(gè)人電腦、服務(wù)器等??梢栽诓煌钠脚_(tái)輕松地遷移應(yīng)用)
更簡單的更新管理(使用Dockerfile,只需要修改小小的配置,就可以替代以往大量的更新工作)
與傳統(tǒng)虛擬機(jī)對(duì)比
場(chǎng)景示例-傳統(tǒng)開發(fā)流程
場(chǎng)景示例-docker環(huán)境開發(fā)流程
Docker 的優(yōu)點(diǎn)
- 1、簡化程序:
Docker 讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,便可以實(shí)現(xiàn)虛擬化。Docker改變了虛擬化的方式,使開發(fā)者可以直接將自己的成果放入Docker中進(jìn)行管理。方便快捷已經(jīng)是 Docker的最大優(yōu)勢(shì),過去需要用數(shù)天乃至數(shù)周的 任務(wù),在Docker容器的處理下,只需要數(shù)秒就能完成。 - 2、避免選擇恐懼癥:
如果你有選擇恐懼癥,還是資深患者。Docker 幫你 打包你的糾結(jié)!比如 Docker 鏡像;Docker 鏡像中包含了運(yùn)行環(huán)境和配置,所以 Docker 可以簡化部署多種應(yīng)用實(shí)例工作。比如 Web 應(yīng)用、后臺(tái)應(yīng)用、數(shù)據(jù)庫應(yīng)用、大數(shù)據(jù)應(yīng)用比如 Hadoop 集群、消息隊(duì)列等等都可以打包成一個(gè)鏡像部署。 - 3、節(jié)省開支:
一方面,云計(jì)算時(shí)代到來,使開發(fā)者不必為了追求效果而配置高額的硬件,Docker 改變了高性能必然高價(jià)格的思維定勢(shì)。Docker 與云的結(jié)合,讓云空間得到更充分的利用。不僅解決了硬件管理的問題,也改變了虛擬化的方式。
Docker 架構(gòu)
Docker 使用客戶端-服務(wù)器 (C/S) 架構(gòu)模式,使用遠(yuǎn)程API來管理和創(chuàng)建Docker容器。
Docker 容器通過 Docker 鏡像來創(chuàng)建。
容器與鏡像的關(guān)系類似于面向?qū)ο缶幊讨械膶?duì)象與類。
| Docker | 面向?qū)ο?/th> |
|---|---|
| 容器 | 對(duì)象 |
| 鏡像 | 類 |

| Docker 鏡像(Images) | Docker 鏡像是用于創(chuàng)建 Docker 容器的模板。 |
| Docker 容器(Container) | 容器是獨(dú)立運(yùn)行的一個(gè)或一組應(yīng)用。 |
| Docker 客戶端(Client) | Docker 客戶端通過命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 與 Docker 的守護(hù)進(jìn)程通信。 |
| Docker 主機(jī)(Host) | 一個(gè)物理或者虛擬的機(jī)器用于執(zhí)行 Docker 守護(hù)進(jìn)程和容器。 |
| Docker 倉庫(Registry) | Docker 倉庫用來保存鏡像,可以理解為代碼控制中的代碼倉庫。Docker Hub(https://hub.docker.com) 提供了龐大的鏡像集合供使用。 |
| Docker Machine | Docker Machine是一個(gè)簡化Docker安裝的命令行工具,通過一個(gè)簡單的命令行即可在相應(yīng)的平臺(tái)上安裝Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。 |
Centos 下docker安裝
- Docker支持以下的CentOS版本:
CentOS 7 (64-bit)
CentOS 6.5 (64-bit) 或更高的版本
前提條件
目前,CentOS 僅發(fā)行版本中的內(nèi)核支持 Docker。
Docker 運(yùn)行在 CentOS 7 上,要求系統(tǒng)為64位、系統(tǒng)內(nèi)核版本為 3.10 以上。
Docker 運(yùn)行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系統(tǒng)為64位、系統(tǒng)內(nèi)核版本為 2.6.32-431 或者更高版本。現(xiàn)運(yùn)行的Linux系統(tǒng)環(huán)境
1、Centos 6.8版本
2、內(nèi)核2.6.32
3、64位操作系統(tǒng)
[root@OzanZone ~]# uname -a
Linux OzanZone 2.6.32-696.6.3.el6.x86_64 #1 SMP Wed Jul 12 14:17:22 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@OzanZone ~]# cat /etc/issue
CentOS release 6.8 (Final)
- 安裝EPEL
因?yàn)橄到y(tǒng)自帶的repo中不帶docker需要安裝epel
Extra Packages for Enterprise Linux(企業(yè)版 Linux 附加軟件包),簡稱 EPEL。
具體請(qǐng)查看文末 附錄1
附錄1 EPEL的簡述
EPEL是一個(gè)由特別興趣小組創(chuàng)建、維護(hù)并管理的,針對(duì) 紅帽企業(yè)版 Linux(RHEL)及其衍生發(fā)行版(比如 CentOS、Scientific Linux、Oracle Enterprise Linux)的一個(gè)高質(zhì)量附加軟件包項(xiàng)目。
官方網(wǎng)址為:https://fedoraproject.org/wiki/EPEL
- EPEL 的軟件包通常不會(huì)與企業(yè)版 Linux 官方源中的軟件包發(fā)生沖突,或者互相替換文件。
- EPEL 項(xiàng)目與 Fedora 基本一致,包含完整的構(gòu)建系統(tǒng)、升級(jí)管理器、鏡像管理器等等。
- EPEL 是yum的一個(gè)軟件源,里面包含了許多基本源里沒有的軟件。安裝上EPEL的源后,就可以直接用yum來安裝軟件,而且EPEL不會(huì)替換原有的源,安裝后會(huì)產(chǎn)生新repo,省去了不少麻煩。
下載EPEL軟件包:
可以到官網(wǎng)去下載。
安裝EPEL源
EPEL 包含一個(gè)叫做epel-release的包,這個(gè)包 包含了EPEL源的gpg密鑰和軟件源信息。您可以通過yum安裝到您的企業(yè)版Linux發(fā)行版上。