一焕济、什么是docker
2013年,docker開(kāi)源盔几。當(dāng)時(shí)docker的功能就是將linux容器中的應(yīng)用代碼打包晴弃,輕松的在服務(wù)器之間遷移。
簡(jiǎn)單來(lái)講逊拍,docker就是一個(gè)用來(lái)裝應(yīng)用的容器上鞠,可以把任何程序放到docker中。
它是跨平臺(tái)的顺献,支持Windows旗国,macOs,linux注整。
二能曾、Docker思想
1度硝、集裝箱
在沒(méi)有集裝箱之前,運(yùn)輸貨物非常零散寿冕,容易丟失蕊程。有了集裝箱之后,就可以密封貨物驼唱,貨物不容易丟失藻茂。
把貨物類(lèi)比程序,如果要把一個(gè)運(yùn)行的程序部署到新機(jī)器上玫恳,就可能出現(xiàn)比較多的錯(cuò)誤辨赐,比如配置文件丟失,環(huán)境配置錯(cuò)誤京办。Docker的出現(xiàn)就完美的解決了這個(gè)問(wèn)題掀序,用集裝箱的思想去管理程序,使得程序遷移簡(jiǎn)單快捷惭婿。
2不恭、標(biāo)準(zhǔn)化
(2.1、運(yùn)輸方式
Docker有一個(gè)中央倉(cāng)庫(kù)财饥,在本機(jī)執(zhí)行docker命令可以把程序打包到倉(cāng)庫(kù)去换吧,部署的時(shí)候再用命令從倉(cāng)庫(kù)把程序運(yùn)輸?shù)椒欠?wù)器上。
(2.2钥星、存儲(chǔ)方式
用Docker之后沾瓦,不需要關(guān)心應(yīng)用存儲(chǔ)路徑,只需要用命令就可以運(yùn)行或停止程序谦炒。
(2.3暴拄、API接口
Docker提供了一系列的api對(duì)應(yīng)用的啟動(dòng),查看透且,刪除等等操作
3豁鲤、隔離
Docker用linux底層的LXC技術(shù)可以實(shí)現(xiàn)快速的創(chuàng)建和銷(xiāo)毀容器,最大效率的隔離了進(jìn)程和資源琳骡。
三、Docker解決了什么問(wèn)題
1最易、很多時(shí)候,代碼在本地運(yùn)行的時(shí)候是沒(méi)有問(wèn)題的剔猿,但是一旦部署到服務(wù)器上就會(huì)出現(xiàn)各種問(wèn)題,有可能是jdk版本归敬,也有可能是tomcat版本等等鄙早,原因很多限番,但是歸根究底問(wèn)題就是一個(gè),本地環(huán)境與服務(wù)器環(huán)境不一樣造成的扳缕。
Docker的出現(xiàn)就完美的解決了這個(gè)問(wèn)題,把操作系統(tǒng)驴剔,jdk粥庄,tomcat,代碼等都一個(gè)個(gè)放到集裝箱里惜互。再打包放到鏡像倉(cāng)庫(kù)上,在本地環(huán)境怎么運(yùn)行训堆,在服務(wù)器上也怎么運(yùn)行。
一句話總結(jié)膘流,Docker解決了運(yùn)行環(huán)境不一致帶來(lái)的問(wèn)題呼股。
2、很多時(shí)候彭谁,測(cè)試環(huán)境的服務(wù)器并不會(huì)只部署一個(gè)應(yīng)用缠局,這是對(duì)資源的浪費(fèi),那假如其他應(yīng)用發(fā)生了死循環(huán)或有某些計(jì)算量特別大的應(yīng)用總是會(huì)占用其他應(yīng)用的資源甩鳄。應(yīng)用Docker就可以解決這個(gè)問(wèn)題妙啃,docker在啟動(dòng)的時(shí)候就先限定了最大的資源使用量,如果一旦超過(guò)揖赴,就會(huì)殺死程序。
3渐北、當(dāng)某些特定時(shí)刻赃蛛,訪問(wèn)量會(huì)特別大的時(shí)候,例如雙11的時(shí)候呕臂,業(yè)務(wù)量會(huì)激增歧蒋。沒(méi)有docker之前州既,都是由運(yùn)維去增加服務(wù)器節(jié)點(diǎn)應(yīng)對(duì)雙11激增的業(yè)務(wù)量,對(duì)于運(yùn)維來(lái)說(shuō)阐虚,這是一個(gè)極大的工作量蚌卤,每臺(tái)服務(wù)器都需要配置環(huán)境。有了docker之后增加節(jié)點(diǎn)的工作量就大大減少,只需要在新增的服務(wù)器節(jié)點(diǎn)上執(zhí)行docker命令就可以快速的擴(kuò)展服務(wù)器诫龙。Docker的出現(xiàn)讓彈性收縮鲫咽,快速擴(kuò)展成為了現(xiàn)實(shí)谷异。