1、關(guān)于Docker
1.1、什么是Docker
Docker概念就是大概了解一下就可以,還是引用一下百度百科吧:
Docker 是一個(gè)開(kāi)源的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的Linux機(jī)器上,也可以實(shí)現(xiàn)虛擬化,容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。
一個(gè)完整的Docker有以下幾個(gè)部分組成:
dockerClient客戶端
Docker Daemon守護(hù)進(jìn)程
Docker Image鏡像
DockerContainer容器 [2]
1.2、為什么要使用Docker
作為一種新興的虛擬化方式,Docker跟傳統(tǒng)的虛擬化方式相比具有眾多的優(yōu)勢(shì)。
更高效的利用系統(tǒng)資源
由于容器不需要進(jìn)行硬件虛擬及運(yùn)行完整操作系統(tǒng)等額外開(kāi)銷,Docker對(duì)系統(tǒng)資源的利用率更高。無(wú)論是應(yīng)用執(zhí)行速度、內(nèi)存損耗或者文件存儲(chǔ)速度,都要比傳統(tǒng)的虛擬機(jī)技術(shù)更高效。因此,相比虛擬機(jī)技術(shù),一個(gè)相同配置的主機(jī),往往可以運(yùn)行更多數(shù)量的應(yīng)用。
更快速的啟動(dòng)時(shí)間
傳統(tǒng)的虛擬機(jī)技術(shù)啟動(dòng)應(yīng)用服務(wù)往往需要數(shù)分鐘,而Docker容器應(yīng)用,由于直接運(yùn)行與宿主內(nèi)核,無(wú)需啟動(dòng)完整的操作系統(tǒng),因此可以做到秒級(jí)、甚至毫秒級(jí)別的啟動(dòng)時(shí)間。大大的節(jié)約了開(kāi)發(fā)、測(cè)試、部署的時(shí)間。
一致的運(yùn)行環(huán)境
開(kāi)發(fā)過(guò)程中一個(gè)常見(jiàn)的問(wèn)題是環(huán)境一致性問(wèn)題。由于開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境、生產(chǎn)環(huán)境不一致,導(dǎo)致有些BUG并未在開(kāi)發(fā)過(guò)程中被發(fā)現(xiàn)。而Docker的鏡像提供了除了內(nèi)核外完整的運(yùn)行時(shí)環(huán)境,確保了應(yīng)用運(yùn)行環(huán)境得一致性,從而不會(huì)再出現(xiàn)“這段代碼在我機(jī)器上沒(méi)問(wèn)題”這類問(wèn)題。
持續(xù)交付和部署
對(duì)開(kāi)發(fā)和運(yùn)維人員來(lái)說(shuō),最希望的就是一次性創(chuàng)建或配置,可以在任意地方正常運(yùn)行。
使用Docker可以通過(guò)定制應(yīng)用鏡像來(lái)實(shí)現(xiàn)持續(xù)集成、持續(xù)交付、部署。開(kāi)發(fā)人員可以通過(guò)DockerFile來(lái)進(jìn)行鏡像構(gòu)建,并結(jié)合 持續(xù)集成系統(tǒng)進(jìn)行集成測(cè)試,而運(yùn)維人員則可以直接在生產(chǎn)環(huán)境中快速部署該鏡像,甚至結(jié)合持續(xù)部署系統(tǒng)進(jìn)行自動(dòng)部署。
而使用DockerFile使鏡像構(gòu)建透明化,不僅僅開(kāi)發(fā)團(tuán)隊(duì)可以理解應(yīng)用運(yùn)行環(huán)境,也方便運(yùn)維團(tuán)隊(duì)理解應(yīng)用運(yùn)行所需條件,幫助更好的生產(chǎn)環(huán)境中部署該鏡像。
更輕松的遷移
由于Docker確保了執(zhí)行環(huán)境得一致性,使得應(yīng)用的遷移更加容易。Docker可以在很多平臺(tái)上運(yùn)行,無(wú)論是物理機(jī)、虛擬機(jī)、公有云、私有云,甚至是筆記本,其運(yùn)行結(jié)果是一致的。因此用戶可以很輕易的將在一個(gè)平臺(tái)上運(yùn)行的應(yīng)用遷移到另一個(gè)平臺(tái),而不用擔(dān)心運(yùn)行環(huán)境得變化導(dǎo)致應(yīng)用無(wú)法正常運(yùn)行的情況。
更輕松的維護(hù)和擴(kuò)展
Docker使應(yīng)用的分層存儲(chǔ)以及鏡像的技術(shù),使得應(yīng)用重復(fù)部分的復(fù)用更為容易,也使得應(yīng)用的維護(hù)更新更加簡(jiǎn)單,基于基礎(chǔ)鏡像進(jìn)一步擴(kuò)展鏡像也變的非常簡(jiǎn)單。此外,Docker團(tuán)隊(duì)同各個(gè)開(kāi)源項(xiàng)目團(tuán)隊(duì)一起維護(hù)了一大批高質(zhì)量的官方鏡像,既可以直接在生產(chǎn)環(huán)境使用,又可以作為基礎(chǔ)進(jìn)一步定制,大大的降低了應(yīng)用服務(wù)的鏡像制作成本。
摘自《Docker從入門到實(shí)踐》。
1.3、Docker版本分類
Docker分為CE版本和EE版本,區(qū)別如下:
Docker社區(qū)版(CE):為了開(kāi)發(fā)人員或小團(tuán)隊(duì)創(chuàng)建基于容器的應(yīng)用,與團(tuán)隊(duì)成員分享和自動(dòng)化的開(kāi)發(fā)管道。docker-ce提供了簡(jiǎn)單的安裝和快速的安裝,以便可以立即開(kāi)始開(kāi)發(fā)。docker-ce集成和優(yōu)化,基礎(chǔ)設(shè)施。(免費(fèi))
Docker企業(yè)版(EE):專為企業(yè)的發(fā)展和IT團(tuán)隊(duì)建立誰(shuí)。docker-ee為企業(yè)提供最安全的容器平臺(tái),以應(yīng)用為中心的平臺(tái)。(付費(fèi))
我們使用CE版本即可,即Docker-CE。
Docker-CE有windows版本,我也安裝過(guò),但是有太多莫名其妙的問(wèn)題,確實(shí)無(wú)法使用,所以就嘗試在虛擬機(jī)的CentOS里使用Docker-CE,效果非常棒,這也就是我前面會(huì)花那么多篇幅來(lái)寫(xiě)Windows下安裝CentOS的原因。這樣初學(xué)者不用再翻各種資料來(lái)進(jìn)行嘗試,確保一氣呵成。哈哈!
2、安裝Docker-CE(請(qǐng)先按步驟體驗(yàn)一下安裝過(guò)程,文章末尾會(huì)追加自動(dòng)化安裝腳本)
docker安裝的有些步驟我也不是很明白,從網(wǎng)上查到相關(guān)知識(shí),通過(guò)實(shí)戰(zhàn)安裝發(fā)現(xiàn)可行,就OK了。
2.1、Docker版本檢查
docker要求CentOS 系統(tǒng)的內(nèi)核版本高于 3.10 ,安裝之前首先要驗(yàn)證你的CentOS 版本是否支持 Docker 。
更新為centos7
查看ip命令: ip addr
沒(méi)有ip解決方法:進(jìn)入 /etc/sysconfig/netwok-scripts/
---> vi ifcfg-ens33
image.png
最后 service network restart ip就出來(lái)了
通過(guò)uname -r 命令查看你當(dāng)前的內(nèi)核版本(建議使用xshell連接虛擬機(jī)進(jìn)行命令操作):
$ uname -r
CentOS內(nèi)核版本沒(méi)有問(wèn)題
2.2、更新系統(tǒng)
使用root 權(quán)限登錄 CentOS。確保 yum 包更新到最新。
# yum -y update
2.3、卸載舊版本(如果安裝過(guò)就版本的話)
# yum remove docker docker-common docker-selinux docker-engine
如果安裝過(guò)舊版本,就會(huì)卸載當(dāng)前版本;如果沒(méi)安裝過(guò),運(yùn)行上面的命令也沒(méi)關(guān)系,只是提示未安裝
比較干凈,沒(méi)有需要?jiǎng)h除的歷史docker。
2.4、安裝需要的軟件包
yum-util 提供yum-config-manager功能,另外兩個(gè)是devicemapper驅(qū)動(dòng)依賴的
yum install -y yum-utils device-mapper-persistent-data lvm2
2.5、設(shè)置yum源,清華鏡像倉(cāng)庫(kù),速度很快
yum -y install wget #如果沒(méi)有安裝wget則安裝,如已安裝則會(huì)跳過(guò)
根據(jù)你的發(fā)行版下載repo文件:
wget -O /etc/yum.repos.d/docker-ce.repo [https://download.docker.com/linux/centos/docker-ce.repo](https://download.docker.com/linux/centos/docker-ce.repo)
把軟件倉(cāng)庫(kù)地址替換為 TUNA:
sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
2.6、安裝docker
$ yum makecache fast # 清緩存
$ yum install -y docker-ce # 安裝docker-ce
2.7、啟動(dòng)并加入開(kāi)機(jī)啟動(dòng)
$ systemctl start docker
$ systemctl enable docker
2.8、驗(yàn)證安裝是否成功
如果有client和service兩部分,則表示docker安裝啟動(dòng)都成功了
$ docker version
3、安裝Docker Compose
以前使用 Docker 的時(shí)候,需要定義 Dockerfile 文件,然后使用 docker build、docker run 等命令操作容器。然而微服務(wù)架構(gòu)的應(yīng)用系統(tǒng)一般包含若干個(gè)微服務(wù),每個(gè)微服務(wù)一般都會(huì)部署多個(gè)實(shí)例,如果每個(gè)微服務(wù)都要手動(dòng)啟停,那么效率之低,維護(hù)量之大可想而知。
使用 Docker Compose 可以輕松、高效地管理容器,他是一個(gè)用于定義和運(yùn)行多容器Docker的應(yīng)用程序工具。
3.1、運(yùn)行命令下載 docker compose
從國(guó)內(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
3.2、給執(zhí)行文件添加執(zhí)行權(quán)限
chmod +x /usr/local/bin/docker-compose
3.3、輸入命令測(cè)試
docker-compose --version
返回:
docker-compose version 1.22.0, build f46880fe
docker compose 安裝成功!
3.4、配置docker國(guó)內(nèi)鏡像
為了確保docker能快速加載應(yīng)用程序鏡像,配置鏡像列表,指向國(guó)內(nèi)的鏡像地址。
修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 鍵值。
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
修改保存后重啟 Docker 以使配置生效。
systemctl restart docker
至此,docker環(huán)境安裝完畢!
4、自動(dòng)化安裝的腳本(后續(xù)我的項(xiàng)目都會(huì)編制相應(yīng)的腳本,便于安裝和維護(hù))
體驗(yàn)過(guò)整個(gè)安裝過(guò)程后,是不是覺(jué)得有些麻煩?是的,命令行模式一步步執(zhí)行確實(shí)很啰嗦,還不好記。所以,我為大家準(zhǔn)備了全自動(dòng)化的安裝腳本,并已經(jīng)上傳到了github,請(qǐng)到github拉取試用!github地址為:https://github.com/tanbushi/install-docker
拉取文件后,可以將 install-docker.sh 上傳到虛擬機(jī)CentOS的任意目錄里,或者將 install-docker.sh 拷入上一篇文章所建立和映射的共享文件夾下(文章里的示例路徑為:F:\dockers),文章請(qǐng)參考:Docker搭建LNMP環(huán)境實(shí)戰(zhàn)(四):安裝VMware Tools共享文件夾;在虛擬機(jī)CentOS里的 /mnt/hgfs/dockers 里訪問(wèn)到 install-docker.sh。
給腳本 install-docker.sh 增加可執(zhí)行權(quán)限
$ chmod +x install-docker.sh
執(zhí)行 install-docker.sh 腳本文件
$ ./install-docker.sh
即可自動(dòng)完成 docker 及 docker-compose 的安裝!Good Lucky!
5、自動(dòng)化卸載docker的腳本
在github地址為:https://github.com/tanbushi/install-docker的項(xiàng)目里有個(gè)uninstall_docker.sh,可以和install.sh進(jìn)行類似處理
執(zhí)行 install-docker.sh 腳本文件
$ ./uninstall-docker.sh
即可自動(dòng)完成 docker 的卸載!
docker鏡像操作
https://blog.csdn.net/wangmx1993328/article/details/81708850
docker容器操作
https://blog.csdn.net/wangmx1993328/article/details/81735070
端口映射
docker run --name myTomcat3 -d -p 8090:8080 tomcat:8.5-alpine
docker實(shí)踐---安裝mysql
https://blog.csdn.net/wangmx1993328/article/details/81805371
使用dockerfile部署javaweb項(xiàng)目
http://www.lxweimin.com/p/ab0de243736a
docker compose部署mysql
https://blog.csdn.net/hjxzb/article/details/84927567