Docker分為3個(gè)核心概念:
1.鏡像(Image)
2.容器(Container)
3.倉庫(Repository)
理解了這三個(gè)概念,就能順利地理解Docker的整個(gè)生命周期。
2.1 核心概念
Docker鏡像
Docker鏡像類似于虛擬機(jī)鏡像,可以將它理解為一個(gè)面向Docker引擎的只讀模板,包含了文件系統(tǒng)。例如:一個(gè)鏡像可以只包含一個(gè)完整的ubuntu操作系統(tǒng)環(huán)境,可以把它稱為Ubuntu鏡像。鏡像也可以安裝了nginx應(yīng)用程序(或用戶需要的其他軟件),可以稱它為nginx鏡像。
鏡像是創(chuàng)建Docker容器的基礎(chǔ)。通過對(duì)版本管理和增量的文件系統(tǒng),Docker提供了一套十分簡單的機(jī)制來創(chuàng)建和更新現(xiàn)有的鏡像,用戶甚至可以從網(wǎng)上下載一個(gè)已經(jīng)做好的應(yīng)用鏡像,并通過簡單的命令就可以直接使用。
Docker容器
容器是從鏡像創(chuàng)建的應(yīng)用運(yùn)行實(shí)例,可以將其啟動(dòng),開始,停止,刪除,而這些容器都是相互隔離,互不可見的。
我們可以把容器看作一個(gè)簡易版的linux系統(tǒng)環(huán)境(這包括root用戶權(quán)限,進(jìn)程空間,用戶空間和網(wǎng)絡(luò)空間等),以及運(yùn)行在其中的應(yīng)用程序打包而成的應(yīng)用盒子。
鏡像自身是只讀的。容器從鏡像啟動(dòng)的時(shí)候,Docker會(huì)在鏡像的最上層創(chuàng)建一個(gè)可寫層,鏡像本身保持不變。
Doker倉庫
Doker倉庫(Repository)類似于代碼倉庫,是Docker集中存放鏡像文件的場所。
有時(shí)候會(huì)看到有資料將Docker倉庫和注冊(cè)服務(wù)器(Registry)混為一談,并不嚴(yán)格區(qū)分.實(shí)際上,注冊(cè)服務(wù)器是存放倉庫的地方,其上存放著多個(gè)倉庫。每個(gè)倉庫集中存放某一類鏡像,往往包括多個(gè)鏡像文件,通過不同的標(biāo)簽(tag)來進(jìn)行區(qū)分.根據(jù)所存儲(chǔ)的鏡像公開與否,Docker倉庫可以分為公開倉庫(Public)和私有倉庫(Private)兩種形式。目前,最大的公開倉庫是Docker Hub,存放著數(shù)量龐大的鏡像供用戶下載。國內(nèi)公開的倉庫包括Dokcer Pool等,可以提供穩(wěn)定的國內(nèi)訪問。當(dāng)然,用戶如果不希望公開分享自己的鏡像文件,Docker也支持用戶在本地網(wǎng)絡(luò)內(nèi)創(chuàng)建一個(gè)只能自己訪問的私有倉庫。當(dāng)用戶創(chuàng)建了自己的鏡像之后就可以使用Push命令將它上傳到指定的公有或私有倉庫。這樣用戶下次在另外一臺(tái)機(jī)器上使用該鏡時(shí),只需將其從倉庫上Pull下來就可以了.
可以看出,Docker利用倉庫管理鏡像的設(shè)計(jì)理念與Git非常相似。
2.2 安裝Docker
Docker支持在主流的操作系統(tǒng)平臺(tái)上使用,包括Ubuntu,CentOS,Windwos以及MacOS系統(tǒng)
等。當(dāng)然,在linux系列平臺(tái)上是原生支持的,使用體驗(yàn)更好。本文使用CentOS7系列來做實(shí)例說明。
Docker支持CentOS6及以后的版本。
對(duì)于CentOS6系統(tǒng)可使用EPEL庫安裝Docker,具體添加EPEL源就不說了。命令如下:
yum install docker-io
對(duì)于CentOS7系統(tǒng),由于CentOS-Extras源中已內(nèi)置Docker,我們可以直接使用如下命令安裝:
[root@daquan ~]# yum install docker
Loaded plugins: fastestmirror, langpacks
epel | 4.3 kB 00:00:00
extras | 3.4 kB 00:00:00
nginx | 2.9 kB 00:00:00
os | 3.6 kB 00:00:00
updates | 3.4 kB 00:00:00
(1/2): epel/7/x86_64/primary_db | 4.6 MB 00:00:00
Loading mirror speeds from cached hostfile
Package 2:docker-1.12.6-11.el7.centos.x86_64 already installed and latest version
Nothing to do
此處我已安裝。
查看Docker的版本,發(fā)現(xiàn)還是1.12版本的。
[root@daquan ~]# docker version
Client:
Version: 1.12.6
API version: 1.24
Package version: docker-common-1.12.6-11.el7.centos.x86_64
Go version: go1.7.4
Git commit: 96d83a5/1.12.6
Built: Tue Mar 7 09:23:34 2017
OS/Arch: linux/amd64
Server:
Version: 1.12.6
API version: 1.24
Package version: docker-common-1.12.6-11.el7.centos.x86_64
Go version: go1.7.4
Git commit: 96d83a5/1.12.6
Built: Tue Mar 7 09:23:34 2017
OS/Arch: linux/amd64
啟動(dòng)docker:
systemctl start docker.service
目前在CentOS系統(tǒng)中更新Docker軟件有兩種方法,一是自行通過源碼編譯安裝,二是下載二進(jìn)制文件進(jìn)行更新。