一、Docker基本概念
Docker是一個(gè)軟件集裝箱化平臺,這意味著您可以構(gòu)建應(yīng)用程序,將它與其依賴關(guān)系一起打包到一個(gè)容器中,然后這些容器可以很容易地運(yùn)送到其他機(jī)器上運(yùn)行。 好的,但什么是集裝箱? 集裝化(也稱為基于容器的虛擬化和應(yīng)用程序集裝箱化)是用于部署和運(yùn)行分布式應(yīng)用程序的OS級虛擬化方法,無需為每個(gè)應(yīng)用程序啟動整個(gè)VM。 相反,多個(gè)獨(dú)立的系統(tǒng)(稱為容器)在單個(gè)控制主機(jī)上運(yùn)行并訪問單個(gè)內(nèi)核。 容器映像是一個(gè)輕量級的、獨(dú)立的、可執(zhí)行的軟件包,它包括運(yùn)行它所需的一切:代碼、運(yùn)行時(shí)、系統(tǒng)工具、系統(tǒng)庫設(shè)置?! ∷灾饕繕?biāo)是將軟件打包成標(biāo)準(zhǔn)化的單元進(jìn)行開發(fā),發(fā)貨和部署?! ±?,假設(shè)有一個(gè)用Scala和R編寫的Linux應(yīng)用程序。因此,為了避免Linux,Scala和R發(fā)生任何版本沖突,Docker只會將此應(yīng)用程序包裝在具有所有版本和依賴項(xiàng)的容器中,并部署 它在任何操作系統(tǒng)或服務(wù)器上都沒有任何版本麻煩?! ‖F(xiàn)在,我們需要做的就是運(yùn)行這個(gè)容器,而不用擔(dān)心依賴的軟件和庫。
所以,這個(gè)過程非常簡單。 每個(gè)應(yīng)用程序?qū)⒃趩为?dú)的容器上運(yùn)行,并將擁有自己的一組庫和依賴項(xiàng)。 這也確保了進(jìn)程級別的隔離,這意味著每個(gè)應(yīng)用程序獨(dú)立于其他應(yīng)用程序,從而使開發(fā)人員可以確保他們可以構(gòu)建不會相互干擾的應(yīng)用程序?! ∪萜鱲s.虛擬機(jī) 容器是應(yīng)用程序?qū)拥某橄螅鼘⒋a和依賴關(guān)系打包在一起。 多個(gè)容器可以在同一臺計(jì)算機(jī)上運(yùn)行,并與其他容器共享操作系統(tǒng)內(nèi)核,每個(gè)容器都作為用戶空間中的獨(dú)立進(jìn)程運(yùn)行。 容器占用的空間少于虛擬機(jī)(容器圖像的大小通常為幾十MB)并且?guī)缀趿⒓磫印?/p>
正如您在集裝箱中看到的那樣,有一個(gè)主機(jī)操作系統(tǒng),然后在上面將會有容器具有每個(gè)應(yīng)用程序的依賴關(guān)系和庫,這使得處理和執(zhí)行速度非常快。 這里沒有客戶操作系統(tǒng),它利用主機(jī)的操作系統(tǒng),與虛擬機(jī)不同,在需要時(shí)共享相關(guān)的庫和資源?! √摂M機(jī)(VMs)是將一臺服務(wù)器變成多臺服務(wù)器的物理硬件的抽象。 管理程序允許多臺虛擬機(jī)在單臺機(jī)器上運(yùn)行。 每個(gè)VM都包含一個(gè)操作系統(tǒng)的完整副本,一個(gè)或多個(gè)應(yīng)用程序,必需的二進(jìn)制文件和占用數(shù)十GB的庫。 VM也可能啟動緩慢。
在這種虛擬化的情況下,有一個(gè)主機(jī)操作系統(tǒng),其中有3個(gè)客戶操作系統(tǒng)在運(yùn)行,它們只不過是虛擬機(jī)。 但是,在同一主機(jī)操作系統(tǒng)上運(yùn)行多個(gè)虛擬機(jī)會導(dǎo)致性能下降,因?yàn)槊總€(gè)虛擬機(jī)都有自己的內(nèi)核和一組庫以及依賴關(guān)系。 這占用了大量的系統(tǒng)資源,如硬盤,處理器,特別是RAM。 所以,這是對Docker,集裝箱化和虛擬化的簡要概述。
二、安裝Docker-CE(請先按步驟體驗(yàn)一下安裝過程,文章末尾會追加自動化安裝腳本)
docker安裝的有些步驟我也不是很明白,從網(wǎng)上查到相關(guān)知識,通過實(shí)戰(zhàn)安裝發(fā)現(xiàn)可行,就OK了。
1、Docker版本檢查
docker要求CentOS 系統(tǒng)的內(nèi)核版本高于 3.10 ,安裝之前首先要驗(yàn)證你的CentOS 版本是否支持 Docker 。
通過uname -r 命令查看你當(dāng)前的內(nèi)核版本(建議使用xshell連接虛擬機(jī)進(jìn)行命令操作):
$ uname -r
[root@localhost ~]# uname -r
3.10.0-957.el7.x86_64
CentOS內(nèi)核版本沒有問題
我使用的是centos7,安裝步驟在鏈接:
2、更新系統(tǒng)
使用root 權(quán)限登錄 CentOS。確保 yum 包更新到最新。
$ yum -y update
3、卸載舊版本(如果安裝過就版本的話)
$ yum remove docker docker-common docker-selinux docker-engine
如果安裝過舊版本docker,有就會卸載當(dāng)前版本;如果沒安裝過,運(yùn)行上面的命令也沒關(guān)系,只是提示未安裝
[root@localhost network-scripts]# yum remove docker docker-common docker-selinux docker-engine
已加載插件:fastestmirror
參數(shù) docker 沒有匹配
參數(shù) docker-common 沒有匹配
參數(shù) docker-selinux 沒有匹配
參數(shù) docker-engine 沒有匹配
不刪除任何軟件包
比較干凈,沒有需要?jiǎng)h除的歷史docker。
4、安裝需要的軟件包
yum-util 提供yum-config-manager功能,另外兩個(gè)是devicemapper驅(qū)動依賴的
$ yum install -y yum-utils device-mapper-persistent-data lvm2
5、設(shè)置yum源,清華鏡像倉庫,速度很快
如果沒有安裝wget則安裝,如已安裝則會跳過
yum -y install wget
根據(jù)你的發(fā)行版下載repo文件:
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
把軟件倉庫地址替換為 TUNA:
sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
6、安裝docker
清緩存
yum makecache fast
安裝docker-ce
yum install docker-ce
7、啟動并加入開機(jī)啟動
systemctl start docker
systemctl enable docker
8、驗(yàn)證安裝是否成功
如果有client和service兩部分,則表示docker安裝啟動都成功了
docker version
結(jié)果輸出
[root@localhost network-scripts]# docker version
Client:
Version: 18.09.3
API version: 1.39
Go version: go1.10.8
Git commit: 774a1f4
Built: Thu Feb 28 06:33:21 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.3
API version: 1.39 (minimum version 1.12)
Go version: go1.10.8
Git commit: 774a1f4
Built: Thu Feb 28 06:02:24 2019
OS/Arch: linux/amd64
Experimental: false
三、安裝Docker Compose
1、運(yùn)行命令下載 docker compose
從國內(nèi)鏡像 get.daocloud.io 快速下載:
curl -L https://get.daocloud.io/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
結(jié)果
[root@localhost network-scripts]# curl -L https://get.daocloud.io/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 423 100 423 0 0 1155 0 --:--:-- --:--:-- --:--:-- 1158
100 11.2M 100 11.2M 0 0 898k 0 0:00:12 0:00:12 --:--:-- 950k
2、給執(zhí)行文件添加執(zhí)行權(quán)限
chmod +x /usr/local/bin/docker-compose
3、輸入命令測試
docker-compose --version
返回:
docker-compose version 1.22.0, build f46880fe
docker compose 安裝成功!
4、配置docker國內(nèi)鏡像
為了確保docker能快速加載應(yīng)用程序鏡像,配置鏡像列表,指向國內(nèi)的鏡像地址。
修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 鍵值。
[root@localhost ~]# vi /etc/docker/daemon.json
添加以下內(nèi)容:
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
修改保存后重啟 Docker 以使配置生效。
systemctl restart docker
至此,docker環(huán)境安裝完畢!
5、檢查docker-compose是否安裝成功
[root@localhost ~]# docker-compose --version
docker-compose version 1.23.2, build 1110ad01
四、腳本安裝
1、腳本代碼
寫一個(gè)install-docker.sh 腳本
腳本代碼如下
#!/bin/bash
# 卸載舊版本
echo ""
echo ""
echo "#########################################################"
echo "# 卸載舊版本 -- 開始 #"
echo "#########################################################"
yum -y remove docker docker-common docker-selinux docker-engine
echo "#########################################################"
echo "# 卸載舊版本 -- 結(jié)束 #"
echo "#########################################################"
# 安裝需要的依賴軟件包
echo ""
echo ""
echo "#########################################################"
echo "# 安裝需要的軟件包 -- 開始 #"
echo "#########################################################"
yum install -y yum-utils device-mapper-persistent-data lvm2
echo "#########################################################"
echo "# 安裝需要的軟件包 -- 結(jié)束 #"
echo "#########################################################"
# 設(shè)置 yum 源,清華鏡像倉庫,速度很快
echo ""
echo ""
echo "#########################################################"
echo "# 設(shè)置 yum 源 -- 開始 #"
echo "#########################################################"
#安裝wget,如果已安裝則會跳過
yum -y install wget
#根據(jù)你的發(fā)行版下載repo文件:
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
#把軟件倉庫地址替換為 TUNA:
sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
echo "#########################################################"
echo "# 設(shè)置 yum 源 -- 結(jié)束 #"
echo "#########################################################"
# 安裝 docker-ce
echo ""
echo ""
echo "#########################################################"
echo "# 安裝 docker-ce -- 開始 #"
echo "#########################################################"
yum -y install docker-ce
echo "#########################################################"
echo "# 安裝 docker-ce -- 結(jié)束 #"
echo "#########################################################"
# 啟動并加入開機(jī)啟動
echo ""
echo ""
echo "#########################################################"
echo "# 啟動并加入開機(jī)啟動 -- 開始 #"
echo "#########################################################"
systemctl start docker
systemctl enable docker
echo "#########################################################"
echo "# 啟動并加入開機(jī)啟動 -- 結(jié)束 #"
echo "#########################################################"
# 驗(yàn)證安裝是否成功
echo ""
echo ""
echo "#########################################################"
echo "# 驗(yàn)證安裝是否成功 -- 開始 #"
echo "#########################################################"
docker version
echo "#########################################################"
echo "# 驗(yàn)證安裝是否成功 -- 結(jié)束 #"
echo "#########################################################"
# 安裝docker-compose
echo ""
echo ""
echo "#########################################################"
echo "# 安裝docker-compose -- 開始 #"
echo "#########################################################"
# 從國內(nèi)鏡像 get.daocloud.io 快速下載
curl -L https://get.daocloud.io/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
echo "#########################################################"
echo "# 安裝docker-compose -- 結(jié)束 #"
echo "#########################################################"
# 驗(yàn)證安裝是否成功
echo ""
echo ""
echo "#########################################################"
echo "# 驗(yàn)證安裝是否成功 -- 開始 #"
echo "#########################################################"
docker-compose --version
echo "#########################################################"
echo "# 驗(yàn)證安裝是否成功 -- 結(jié)束 #"
echo "#########################################################"
# 添加 docker 國內(nèi)鏡像站點(diǎn)并重啟docker
echo ""
echo ""
echo "#########################################################"
echo "# 添加 docker 國內(nèi)鏡像站點(diǎn)并重啟docker -- 開始 #"
echo "#########################################################"
#創(chuàng)建目錄:/etc/docker
mkdir -p /etc/docker
echo '{ "registry-mirrors": [ "https://registry.docker-cn.com" ] }' >> /etc/docker/daemon.json
systemctl restart docker
echo "#########################################################"
echo "# 添加 docker 國內(nèi)鏡像站點(diǎn)并重啟docker -- 結(jié)束 #"
echo "#########################################################"
echo ""
echo ""
echo "install OK!" # 提示安裝完成
echo ""
echo "enjoy!"
echo " tanbushi 2019-01-29"
echo ""
echo ""
2、修改權(quán)限
chmod u+x install-docker.sh
3、執(zhí)行腳本
在腳本所在目錄下執(zhí)行
./install-docker.sh
4、檢查是否成功安裝
1)、檢查docker是否成功安裝
[root@localhost ~]# docker version
Client:
Version: 18.09.3
API version: 1.39
Go version: go1.10.8
Git commit: 774a1f4
Built: Thu Feb 28 06:33:21 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.3
API version: 1.39 (minimum version 1.12)
Go version: go1.10.8
Git commit: 774a1f4
Built: Thu Feb 28 06:02:24 2019
OS/Arch: linux/amd64
Experimental: false
2)、檢查docker-compose是否安裝成功
[root@localhost ~]# docker-compose --version
docker-compose version 1.23.2, build 1110ad01