Docker 是一個(gè)劃時(shí)代的開源項(xiàng)目,降低了云計(jì)算資源供應(yīng)的成本,同時(shí)讓應(yīng)用的部署、測(cè)試和分發(fā)都變得前所未有的高效和輕松!
Docker 的組件構(gòu)成
Docker的主要概念
了解 Docker 的主要構(gòu)成、概念及其作用:
- Docker Engine
- Docker Image(鏡像)
- Docker Container(容器)
- Docker Registry(倉(cāng)庫(kù))
Docker Engine
Docker Engine 是 Docker 主程序,主要包含Docker Client 和 Docker Server,可以創(chuàng)建 Docker 鏡像并運(yùn)行 Docker 容器 。Docker Engine里最主要的命令是 Docker Cli(docker) 和 Docker Daemon(dockerd)
[root@spark3 ~]# docker version
Client:
Version: 1.12.1
API version: 1.24
Go version: go1.6.3
Git commit: 23cf638
Built:
OS/Arch: linux/amd64
Server:
Version: 1.12.1
API version: 1.24
Go version: go1.6.3
Git commit: 23cf638
Built:
OS/Arch: linux/amd64
Docker 鏡像
Docker 鏡像(Image), 就是一個(gè)只讀的模板,例如:一個(gè)鏡像可以包含一個(gè)完整的 ubuntu 操作系統(tǒng)環(huán)境,里面僅安裝了 Apache 或用戶需要的其它應(yīng)用程序。鏡像文件支持標(biāo)簽(tag),用戶可以指定鏡像的標(biāo)簽。不帶標(biāo)簽的鏡像,默認(rèn)是 latest 標(biāo)簽。
當(dāng)用戶創(chuàng)建了自己的鏡像之后就可以使用 push
命令將它上傳到公有或者私有倉(cāng)庫(kù),這樣下次在另外一臺(tái)機(jī)器上使用這個(gè)鏡像時(shí)候,只需要從倉(cāng)庫(kù)上 pull
下來就可以了。
鏡像可以用來創(chuàng)建 Docker 容器。
運(yùn)行命令 docker run hello-world
,執(zhí)行結(jié)果是生成了一個(gè)容器,我們可以理解這個(gè)容器是鏡像hello-world 的一個(gè)實(shí)例。我們理解這行命令,可以分成三部分:

Docker 容器
Docker 容器(Container),是Docker從鏡像創(chuàng)建的運(yùn)行實(shí)例。它可以被啟動(dòng)、開始、停止、刪除(docker run, docker start, docker stop, docker rm
)。Docker 利用容器(Container)來運(yùn)行應(yīng)用,每個(gè)容器都是相互隔離的、保證安全的平臺(tái)。
我們可以把容器看做是一個(gè)簡(jiǎn)易版的 Linux 環(huán)境(包括root用戶權(quán)限、進(jìn)程空間、用戶空間和網(wǎng)絡(luò)空間等)和運(yùn)行在其中的應(yīng)用程序,和虛擬機(jī)有點(diǎn)相似。
Docker Registry(注冊(cè)服務(wù)器)
- 倉(cāng)庫(kù)(Repository)是集中存放鏡像文件的場(chǎng)所
- 倉(cāng)庫(kù)注冊(cè)服務(wù)器(Registry),有時(shí)候會(huì)和倉(cāng)庫(kù)混為一談,并不嚴(yán)格區(qū)分。實(shí)際上,倉(cāng)庫(kù)注冊(cè)服務(wù)器上往往存放著多個(gè)倉(cāng)庫(kù),每個(gè)倉(cāng)庫(kù)中又包含了多個(gè)鏡像,每個(gè)鏡像有不同的標(biāo)簽(tag)
- 倉(cāng)庫(kù)分為公開倉(cāng)庫(kù)(Public)和私有倉(cāng)庫(kù)(Private)兩種形式,最大的公開倉(cāng)庫(kù)是 Docker Hub,存放了數(shù)量龐大的鏡像供用戶下載
- 國(guó)內(nèi)的公開倉(cāng)庫(kù)包括 時(shí)速云 、網(wǎng)易云 等,可以提供大陸用戶更穩(wěn)定快速的訪問
- 用戶也可以在本地網(wǎng)絡(luò)內(nèi)創(chuàng)建一個(gè)私有倉(cāng)庫(kù)(參考“私有倉(cāng)庫(kù)”部分)
帶著問題學(xué)習(xí)Docker的基本應(yīng)用
- 啟動(dòng) Docker 服務(wù)
- Docker默認(rèn)的數(shù)據(jù)容量是多大?
- 如何使用 lvm-direct?
- 如何讓Docker 支持更大的數(shù)據(jù)容量?
- Docker 的鏡像文件來自哪里?
- 官方的鏡像文件來自哪里?
- 注冊(cè) Docker Hub 的賬號(hào)有什么作用?
- 如何使用第三方Registry 服務(wù)器的鏡像?
- 如何把官方的鏡像文件變成我的鏡像文件?
- 如何使用 DockerFile 來構(gòu)建我的鏡像文件?
- 運(yùn)行某鏡像文件的容器的需求
- 如何以后臺(tái)進(jìn)程方式運(yùn)行?
- 如何以控制臺(tái)交互方式運(yùn)行?
- 如何指定主機(jī)某個(gè)目錄和容器某個(gè)目錄的掛載關(guān)系
- 如何指定主機(jī)端口和容器端口的映射關(guān)系,比如創(chuàng)建MySQL鏡像的一個(gè)容器時(shí),如何指定端口,root密碼
- 如何指定容器的IP地址
- 如何整合多個(gè)容器的組合。比如說,MediaWiki 容器+MySQL容器,才是一個(gè)完整的 MediaWiki 應(yīng)用。如何把這兩個(gè)容器整合并方便的異地部署