個人專題目錄
Docker簡介
1. 是什么
問題:為什么會有docker出現(xiàn)
一款產(chǎn)品從開發(fā)到上線猎提,從操作系統(tǒng)踊挠,到運行環(huán)境啡专,再到應(yīng)用配置。作為開發(fā)+運維之間的協(xié)作我們需要關(guān)心很多東西霍衫,這也是很多互聯(lián)網(wǎng)公司都不得不面對的問題候引,特別是各種版本的迭代之后,不同版本環(huán)境的兼容敦跌,對運維人員都是考驗澄干。
Docker之所以發(fā)展如此迅速,也是因為它對此給出了一個標準化的解決方案。
環(huán)境配置如此麻煩傻寂,換一臺機器息尺,就要重來一次,費力費時疾掰。很多人想到搂誉,能不能從根本上解決問題,軟件可以帶環(huán)境安裝静檬?也就是說炭懊,安裝的時候,把原始環(huán)境一模一樣地復(fù)制過來拂檩。開發(fā)人員利用 Docker 可以消除協(xié)作編碼時“在我的機器上可正常工作”的問題侮腹。
之前在服務(wù)器配置一個應(yīng)用的運行環(huán)境,要安裝各種軟件稻励,Java/Tomcat/MySQL/JDBC驅(qū)動包等父阻。安裝和配置這些東西有多麻煩就不說了,它還不能跨平臺望抽。假如我們是在 Windows 上安裝的這些環(huán)境加矛,到了 Linux 又得重新裝。況且就算不跨操作系統(tǒng)煤篙,換另一臺同樣操作系統(tǒng)的服務(wù)器斟览,要移植應(yīng)用也是非常麻煩的。
傳統(tǒng)上認為辑奈,軟件編碼開發(fā)/測試結(jié)束后苛茂,所產(chǎn)出的成果即是程序或是能夠編譯執(zhí)行的二進制字節(jié)碼等(java為例)。而為了讓這些程序可以順利執(zhí)行鸠窗,開發(fā)團隊也得準備完整的部署文件妓羊,讓維運團隊得以部署應(yīng)用程式,開發(fā)需要清楚的告訴運維部署團隊塌鸯,用的全部配置文件+所有軟件環(huán)境侍瑟。不過,即便如此丙猬,仍然常常發(fā)生部署失敗的狀況。Docker鏡像的設(shè)計费韭,使得Docker得以打破過去「程序即應(yīng)用」的觀念茧球。透過鏡像(images)將作業(yè)系統(tǒng)核心除外,運作應(yīng)用程式所需要的系統(tǒng)環(huán)境星持,由下而上打包抢埋,達到應(yīng)用程式跨平臺間的無縫接軌運作。
docker理念
Docker是基于Go語言實現(xiàn)的云開源項目。
Docker的主要目標是“Build揪垄,Ship and Run Any App,Anywhere”穷吮,也就是通過對應(yīng)用組件的封裝、分發(fā)饥努、部署捡鱼、運行等生命周期的管理,使用戶的APP(可以是一個WEB應(yīng)用或數(shù)據(jù)庫應(yīng)用等等)及其運行環(huán)境能夠做到“一次封裝酷愧,到處運行”驾诈。
Linux 容器技術(shù)的出現(xiàn)就解決了這樣一個問題,而 Docker 就是在它的基礎(chǔ)上發(fā)展過來的溶浴。將應(yīng)用運行在 Docker 容器上面乍迄,而 Docker 容器在任何操作系統(tǒng)上都是一致的,這就實現(xiàn)了跨平臺士败、跨服務(wù)器闯两。只需要一次配置好環(huán)境,換到別的機子上就可以一鍵部署好谅将,大大簡化了操作
解決了運行環(huán)境和配置問題軟件容器漾狼,方便做持續(xù)集成并有助于整體發(fā)布的容器虛擬化技術(shù)。