Docker環(huán)境搭建

一、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)心依賴的軟件和庫。

image

所以,這個(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>

image

正如您在集裝箱中看到的那樣,有一個(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也可能啟動緩慢。

image

在這種虛擬化的情況下,有一個(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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,732評論 6 539
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,214評論 3 426
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 177,781評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,588評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,315評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,699評論 1 327
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,698評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,882評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,441評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,189評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,388評論 1 372
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,933評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,613評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,023評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,310評論 1 293
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,112評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,334評論 2 377

推薦閱讀更多精彩內(nèi)容