什么是Docker?
專注于為中小企業(yè)提供成都網(wǎng)站制作、做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)沁水免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
Docker是一種Linux容器技術(shù),一種高效、敏捷、和輕量級(jí)的容器解決方案,并且支持在多種主流平臺(tái)(PaaS)和本地部署。Docker是基于Go語(yǔ)言實(shí)現(xiàn)的云kai源項(xiàng)目,誕生于2013年,最初發(fā)起者是DotCloud公司,后來(lái)改名為DockerInc,之后專注于Docker相關(guān)技術(shù)和產(chǎn)品的kai發(fā)。Docker項(xiàng)目目前已經(jīng)加入了Linux基金會(huì),遵循Apache2.0kai源協(xié)議,全部kai源dai碼均在https://github.com/docker上進(jìn)行相關(guān)維護(hù),官網(wǎng)地址為:https://www.docker.com/,有相關(guān)文檔可以參考,現(xiàn)在docker與openstack同為最受歡迎的云計(jì)算kai源項(xiàng)目。
- docker的Logo設(shè)計(jì)為藍(lán)色鯨魚,拖著許多集裝箱。docker的構(gòu)想思想是要實(shí)現(xiàn)“Build,ShipandRunAnyApp,Anywhere”,即通過對(duì)應(yīng)用的封裝(Packaging)、分發(fā)(Distribution)、部署(Deployment)、運(yùn)行(Runtime)生命周期進(jìn)行管理,達(dá)到應(yīng)用組件“一次封裝,到處運(yùn)行”的目的。這里的應(yīng)用組件,既可以是一個(gè)Web應(yīng)用、一個(gè)編譯環(huán)境,也可以是一套數(shù)據(jù)庫(kù)平臺(tái)服務(wù),甚至是一個(gè)操作系統(tǒng)或集群。
- 基于Linux平臺(tái)上的多項(xiàng)kai源技術(shù),Docker提供了高效、敏捷和輕量級(jí)的容器方案,并支持部署到本地環(huán)境和多種主流云平臺(tái)。可以說(shuō),Docker首次為應(yīng)用的kai發(fā)、運(yùn)行和部署提供了“一站式”的實(shí)用解決方案。
為何要使用docker?
1,Docker容器虛擬化的好處
- Docker項(xiàng)目的發(fā)起人和Docker公司CTOSolomonHykes曾認(rèn)為,Docker在正確的地點(diǎn)、正確的時(shí)間順應(yīng)了正確的趨勢(shì)——如何正確地構(gòu)建應(yīng)用。
- 在云時(shí)dai,kai發(fā)者創(chuàng)建的應(yīng)用必須要能很方便地在網(wǎng)絡(luò)上傳播,也就是說(shuō)應(yīng)用必須脫離底層物理硬件的限制;同時(shí)必須是“任何時(shí)間、任何地點(diǎn)”可獲取的。因此,kai發(fā)者需要一種新型的創(chuàng)建分布式應(yīng)用程序的方式,快速分發(fā)和部署,這正是Docker所能夠提供的最大優(yōu)勢(shì)。
- 舉個(gè)簡(jiǎn)單的例子,假設(shè)用戶試圖基于最常見的LAMP(Linux+Apache+MySQL+PHP)組合來(lái)構(gòu)建一個(gè)網(wǎng)站。按照傳統(tǒng)的做法,首先,需要安裝Apache、MySQL和PHP以及它們各自運(yùn)行所依賴的環(huán)境;之后分別對(duì)它們進(jìn)行配置(包括創(chuàng)建合適的用戶、配置參數(shù)等);經(jīng)過大量的操作后,還需要進(jìn)行功能測(cè)試,看是否工作正常;如果不正常,則進(jìn)行調(diào)試追蹤,意味著更多的時(shí)間dai價(jià)和不可控的風(fēng)險(xiǎn)??梢韵胂?,如果應(yīng)用數(shù)目變多,事情會(huì)變得更加難以處理。
- 更為可怕的是,一旦需要服務(wù)器遷移(例如從亞馬遜云遷移到其他云),往往需要對(duì)每個(gè)應(yīng)用都進(jìn)行重新部署和調(diào)試。這些瑣碎而無(wú)趣的“體力活”,極大地降低了工作效率。究其根源,是這些應(yīng)用直接運(yùn)行在底層操作系統(tǒng)上,無(wú)法保證同一份應(yīng)用在不同的環(huán)境中行為一致。
- 而Docker提供了一種更為聰明的方式,通過容器來(lái)打包應(yīng)用,解耦應(yīng)用和運(yùn)行平臺(tái)。意味著遷移的時(shí)候,只需要在新的服務(wù)器上啟動(dòng)需要的容器就可以了,無(wú)論新舊服務(wù)器是否是同一類型的平臺(tái)。這無(wú)疑將節(jié)約大量的寶貴時(shí)間,并降低部署過程出現(xiàn)問題的風(fēng)險(xiǎn)。
2,Docker在kai發(fā)和運(yùn)維中的優(yōu)勢(shì):
- 更快速的交付和部署:使用Docker,kai發(fā)人員可以使用鏡像來(lái)快速構(gòu)建一套標(biāo)準(zhǔn)的kai發(fā)環(huán)境;kai發(fā)完成之后,測(cè)試和運(yùn)維人員可以直接使用完全相同環(huán)境來(lái)部署dai碼。只要kai發(fā)測(cè)試過的dai碼,就可以確保在生產(chǎn)環(huán)境無(wú)縫運(yùn)行。Docker可以快速創(chuàng)建和刪除容器,實(shí)現(xiàn)快速迭dai,大量節(jié)約kai發(fā)、測(cè)試、部署的時(shí)間。并且,整個(gè)過程全程可見,使團(tuán)隊(duì)更容易理解應(yīng)用的創(chuàng)建和工作過程。
- 更高效的資源利用:Docker容器的運(yùn)行不需要額外的虛擬化管理程序(VirtualMachineManager,VMM,以及Hypervisor)支持,它是內(nèi)核級(jí)的虛擬化,可以實(shí)現(xiàn)更高的性能,同時(shí)對(duì)資源的額外需求很低。跟傳統(tǒng)虛擬機(jī)方式相比,要提高一到兩個(gè)數(shù)量級(jí)。
- 更輕松的遷移和擴(kuò)展:Docker容器幾乎可以在任意的平臺(tái)上運(yùn)行,包括物理機(jī)、虛擬機(jī)、公有云、私有云、個(gè)人電腦、服務(wù)器等,同時(shí)支持主流的操作系統(tǒng)發(fā)行版本。這種兼容性讓用戶可以在不同平臺(tái)之間輕松地遷移應(yīng)用。
- 更簡(jiǎn)單的更新管理:使用Dockerfile,只需要小小的配置修改,就可以替dai以往大量的更新工作。并且所有修改都以增量的方式被分發(fā)和更新,從而實(shí)現(xiàn)自動(dòng)化并且高效的容器管理。
3,Docker與虛擬機(jī)比較:
- 作為一種輕量級(jí)的虛擬化方式,Docker在運(yùn)行應(yīng)用上與傳統(tǒng)的虛擬機(jī)方式相比具有顯著優(yōu)勢(shì):
Docker容器很快,啟動(dòng)和停止可以在秒級(jí)實(shí)現(xiàn),而傳統(tǒng)的虛擬機(jī)方式需要數(shù)分鐘。
Docker容器對(duì)系統(tǒng)資源需求很少,一臺(tái)主機(jī)上可以同時(shí)運(yùn)行數(shù)千個(gè)Docker容器(在IBM服務(wù)器上已經(jīng)實(shí)現(xiàn)了同時(shí)運(yùn)行10K量級(jí)的容器實(shí)例)。
Docker通過類似Git設(shè)計(jì)理念的操作來(lái)方便用戶獲取、分發(fā)和更新應(yīng)用鏡像,存儲(chǔ)復(fù)用,增量更新。
Docker通過Dockerfile支持靈活的自動(dòng)化創(chuàng)建和部署機(jī)制,提高工作效率,使流程標(biāo)準(zhǔn)化。
Docker容器除了運(yùn)行其中應(yīng)用外,基本不消耗額外的系統(tǒng)資源,保證應(yīng)用性能的同時(shí),盡量減小系統(tǒng)kai銷。傳統(tǒng)虛擬機(jī)方式運(yùn)行N個(gè)不同的應(yīng)用就要起N個(gè)虛擬機(jī)(每個(gè)虛擬機(jī)需要單獨(dú)分配獨(dú)占的內(nèi)存、磁盤等資源),而Docker只需要啟動(dòng)N個(gè)隔離的“很薄的”容器,并將應(yīng)用放進(jìn)容器內(nèi)即可。應(yīng)用獲得的是接近原生的運(yùn)行性能。
當(dāng)然,在隔離性方面,傳統(tǒng)的虛擬機(jī)方式提供的是相對(duì)封閉的隔離。但這并不意味著Docker就不安全,Docker利用Linux系統(tǒng)上的多種防護(hù)技術(shù)實(shí)現(xiàn)了嚴(yán)格的隔離可靠性,并且可以整合眾多安全工具。從1.3.0版本kai始,Docker重點(diǎn)改善了容器的安全控制和鏡像的安全機(jī)制,極大提高了使用Docker的安全性。在已知的大規(guī)模應(yīng)用中,目前尚未出現(xiàn)值得擔(dān)憂的安全隱患。
Docker容器技術(shù)與傳統(tǒng)虛擬機(jī)技術(shù)的特性比較
docker官網(wǎng):https://www.docker.com/
docker官方文檔:https://docs.docker.com/
- Docker值得關(guān)注的特性:
文件系統(tǒng)隔離:每個(gè)進(jìn)程容器運(yùn)行在一個(gè)完全獨(dú)立的根文件系統(tǒng)里。
資源隔離:系統(tǒng)資源,像CPU和內(nèi)存等可以分配到不同的容器中,使用cgroup。網(wǎng)絡(luò)隔離:每個(gè)進(jìn)程容器運(yùn)行在自己的網(wǎng)絡(luò)空間,虛擬接口和IP地址。
日志記錄:Docker將會(huì)收集和記錄每個(gè)進(jìn)程容器的標(biāo)準(zhǔn)流(stdout/stderr/stdin),用于實(shí)時(shí)檢索或批量檢索。
變更管理:容器文件系統(tǒng)的變更可以提交到新的映像中,并可重復(fù)使用以創(chuàng)建更多的容器。無(wú)需使用模板或手動(dòng)配置。
交互式shell:Docker可以分配一個(gè)虛擬終端并關(guān)聯(lián)到任何容器的標(biāo)準(zhǔn)輸入上
在安裝docker之前,再說(shuō)一點(diǎn),docker現(xiàn)在有兩個(gè)版本,一個(gè)叫做docker-EE企業(yè)版,收費(fèi)的一個(gè)叫docker-CE社區(qū)版,免費(fèi)版,其實(shí)兩個(gè)版本并沒有太大的偏差,不一樣的是docker公司會(huì)提供后續(xù)的官方的技術(shù)支持等服務(wù),對(duì)于我們來(lái)說(shuō),肯定用社區(qū)辦的多,我們拿來(lái)學(xué)習(xí)社區(qū)辦更是可以的。
安裝docker內(nèi)核版本要求:3.10及以上
如果是centos6版本,因?yàn)閏entos6默認(rèn)的內(nèi)核版本是2.6,想要安裝docker,可以升級(jí)內(nèi)核。
(1)官方安裝:(我們是測(cè)試環(huán)境,所以安裝的是ce)
[root@sqm-docker01 yum.repos.d]# pwd
/etc/yum.repos.d
[root@sqm-docker01 yum.repos.d]# vim dockerce.repo
[dockerce] //倉(cāng)庫(kù)類別
name=dockerce //倉(cāng)庫(kù)名稱(說(shuō)明)
baseurl=https://download.docker.com/linux/centos/7/x86_64/stable/ //URL訪問路徑
enabled=1 //啟用此軟件倉(cāng)庫(kù)
gpgcheck=0 //驗(yàn)證(檢查)軟件包的簽名,0表示不檢查,1表示檢查
[root@sqm-docker01 yum.repos.d]# yum repolist
//查看已配置的yum倉(cāng)庫(kù)
//安裝docekr-ce
[root@sqm-docker01 yum.repos.d]# yum -y install docker-ce
##或者直接下載docker-ce.repo文件:
[root@k8s-master ~]# cd /etc/yum.repos.d/
[root@k8s-master yum.repos.d]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@k8s-master yum.repos.d]# yum repolist
[root@k8s-master yum.repos.d]# yum -y install docker-ce
[root@k8s-master yum.repos.d]# docker –v
(2)國(guó)內(nèi)阿里yun源下載docker-ce:
(1)可以編寫自定義yum倉(cāng)庫(kù):
阿里巴巴開源鏡像站:https://opsx.alibaba.com/mirror
#找到docker-ce
URL:https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/
yum倉(cāng)庫(kù)內(nèi)容:
(2)或者直接下載阿里的repo源:
將該文件使用wget工具下載到本地:
[root@sqm-docker01 yum.repos.d]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
查看docker-ce的可用版本:
[root@sqm-docker01 yum.repos.d]# yum install -y docker-ce-18.09.0-3.el7 docker-ce-cli-18.09.0-3.el7 containerd.io-1.2.0-3.el7
下載指定版本:
[root@sqm-docker01 yum.repos.d]# yum install -y docker-ce-18.09.0-3.el7 docker-ce-cli-18.09.0-3.el7 containerd.io-1.2.0-3.el7
- 以上三個(gè)安裝包分別是:
- 安裝社區(qū)版
- 提供docker客戶端
- 提供運(yùn)行環(huán)境
安裝完啟動(dòng)docker,并加入開機(jī)自啟:
[root@sqm-docker01 yum.repos.d]# systemctl start docker
[root@sqm-docker01 yum.repos.d]# systemctl enable docker
查看docker的運(yùn)行進(jìn)程:
(1)Docker命令自動(dòng)補(bǔ)全(最小化安裝的系統(tǒng)需要安裝,如果是安裝的圖形化則默認(rèn)自帶命令補(bǔ)全)
[root@docker01 ~]# yum -y install bash-completion
[root@docker01 ~]# curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
[root@docker01 ~]# source /etc/bash_completion.d/docker-compose
(2)docker配置加速器:
道云加速器網(wǎng)址:https://www.daocloud.io/
登錄之后會(huì)有一個(gè)火箭的圖標(biāo),點(diǎn)擊它。
根據(jù)提示重啟docker服務(wù):
[root@sunqiuming-1 ~]# systemctl daemon-reload #需要重新加載守護(hù)進(jìn)程
[root@sunqiuming-1 ~]# systemctl restart docker
在完成加速器的操作之后,我們會(huì)發(fā)現(xiàn)/etc/多了一個(gè)文件。
[root@sunqiuming-1 ~]# cat /etc/docker/daemon.json
{"registry-mirrors": ["http://f1361db2.m.daocloud.io"]}
####也就是說(shuō),剛才的那句話,就是為了實(shí)現(xiàn)這個(gè)文件,添加這個(gè)網(wǎng)址,其實(shí)這個(gè)網(wǎng)址那,也是可以更改的,加速器也不只是道云一家,還有一家公司,也提供加速器服務(wù),就是大名鼎鼎的阿里云
阿里云官網(wǎng):https://www.aliyun.com/
也可以更改成這個(gè)網(wǎng)址,當(dāng)然如果你更改之后,還需要執(zhí)行reload命令,重新加載一下配置文件。
[root@sunqiuming-1 ~]# systemctl daemon-reload
[root@sunqiuming-1 ~]# systemctl restart docker
以上基本就是docker部署安裝及優(yōu)化的全部?jī)?nèi)容。
———————— 本文至此結(jié)束,感謝閱讀 ————————