摘要:年肖德時(shí)先生加入,擔(dān)任內(nèi)部工作組。老肖語錄是肖德時(shí)先生推出的個(gè)人公眾號(hào)欄目,他利用這個(gè)公眾號(hào)記錄自己創(chuàng)業(yè)路上的點(diǎn)點(diǎn)滴滴,不時(shí)會(huì)有精彩的技術(shù)感悟與分享,歡迎大家關(guān)注。
我今天看到一篇網(wǎng)友分享的 php 環(huán)境下的Docker持續(xù)集成案例。筆者大膽的試用后嘗到了容器技術(shù)的甜頭,也在文中提出了一個(gè)沒有解決的困惑。 原來他是把代碼放在容器外面,通過掛載目錄的方法把代碼加到容器里面運(yùn)行的。這樣雖然跑起來很快,但筆者感覺這和 Docker 的口號(hào) build、ship、run 還是有很大的區(qū)別。當(dāng)然,他把代碼放在鏡像里,每次變動(dòng)都需要花上十幾分鐘等鏡像build,push 到倉庫后才能run發(fā)布,這個(gè)過程筆者也接受不了。這個(gè)網(wǎng)友的疑惑是構(gòu)建鏡像本身拖慢了集成的速度,這和一般情況下采用新技術(shù)能提高生產(chǎn)力的故事在直覺上是說不通的。
我想提提自己的看法。首先,Docker鏡像本身是一個(gè)壓縮包,每次即使只改幾個(gè)文件,也需要把整個(gè)項(xiàng)目壓縮一遍,沒法增量壓縮。所以,如果你的開發(fā)過程中需要頻繁的改內(nèi)容的時(shí)候,用 Docker 先打鏡像再發(fā)布的流程就是一種反作用力,直接降低你的生產(chǎn)力。這個(gè)時(shí)候,你巧借 Docker 容器的環(huán)境一致性,直接把源碼掛載到容器里面運(yùn)行的做法應(yīng)該是一個(gè)好辦法。
我也意識(shí)到 Docker 對(duì) CI這一塊并沒有考慮那么周到,還是需要我們自己來解決遇到的問題。比如本地的測試,可以考慮使用 vagrant 來解決,如下面的例子,很巧妙:
如果我們把 CI 的問題再擴(kuò)展到 CD,上面源碼是否放到鏡像里面,仍然有很多可以討論的地方。對(duì)于 Docker 的 build,ship,run一樣有很多沖突,我是這么理解的:
build過程,從Docker 宣傳的口號(hào)來說,源碼作為服務(wù)組件的組成部分,確實(shí)應(yīng)該放在鏡像當(dāng)中。但是,在沒有 Docker之前,我們的源碼也是打包的,這方面系統(tǒng)方面的安裝包已經(jīng)足夠強(qiáng)大。但之前的安裝包一定是需要你編寫依賴環(huán)境的,每一種系統(tǒng)要寫一個(gè) spec。在有了 Docker 之后,這個(gè)困難就沒有了。因?yàn)?,你的依賴環(huán)境就在鏡像里面,不需要額外的考慮環(huán)境的變化。所以,代碼掛載進(jìn)來也不會(huì)影響環(huán)境。
ship 是為鏡像倉庫為中心,你可以把 鏡像存到倉庫里面,也可以把鏡像拉在主機(jī)上。代碼作為經(jīng)常變化的部分,并不能把鏡像作為不可變的組件特性給發(fā)揮到極致。所以,源碼在鏡像里面打包分發(fā)也不一定是好事。
run 的部分是秒開應(yīng)用以及依賴的環(huán)境。把源碼打包到鏡像里面后,Run 新版本的鏡像,就需要 stop 老鏡像。畢竟有一個(gè)停起的過程,如果沒有灰度發(fā)布的過程,這個(gè)更新鏡像的過程就是中斷服務(wù)的。
上面的困惑雖然小,也能讓我們看到 Docker 的使用是需要花心思的。盲從的亂用 Docker 并不能給你帶來甜頭,反而會(huì)讓你更煩惱。希望大家一起探討起來,一起發(fā)現(xiàn)一些困惑,一起來探討解決。
肖德時(shí)先生現(xiàn)任數(shù)人云CTO,在數(shù)人云負(fù)責(zé)下一代DCOS組件的選型和整合,讓眾多DCOS
組件能無縫連接,提供支持微服務(wù)架構(gòu)下輕量級(jí)PaaS平臺(tái)。肖德時(shí)先生曾就職于多家知名IT公司,擅長企業(yè)級(jí)工具軟件的設(shè)計(jì)及實(shí)現(xiàn),擁有十五年計(jì)算機(jī)行業(yè)從業(yè)經(jīng)驗(yàn)。2010年肖德時(shí)先生加入Redhat,擔(dān)任內(nèi)部工作組Team
Leader。”老肖語錄“是肖德時(shí)先生推出的個(gè)人公眾號(hào)欄目,他利用這個(gè)公眾號(hào)記錄自己創(chuàng)業(yè)路上的點(diǎn)點(diǎn)滴滴,不時(shí)會(huì)有精彩的技術(shù)感悟與分享,歡迎大家關(guān)注。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/26548.html
摘要:今天為大家介紹的容器管理工具是數(shù)人云基于最新技術(shù)的一個(gè)開源項(xiàng)目。今天從技術(shù)角度分享一下數(shù)人云從設(shè)計(jì)到開發(fā)的實(shí)踐之路。從控制面板說起數(shù)人云是一家開源技術(shù)的公司,最初希望做一個(gè)開源項(xiàng)目,相當(dāng)于做了一次內(nèi)部創(chuàng)新。數(shù)人云的技術(shù)棧是,正好與十分密切。 小數(shù)表示最近霧鎖京城真是有些可怕,迷迷蒙蒙讓人看不清遠(yuǎn)處,大家外出也要注意防霾哦! 容器管理面板Crane,是 數(shù)人云的第一個(gè)開源項(xiàng)目,那...
摘要:更多技術(shù)棧的包容數(shù)人云技術(shù)團(tuán)隊(duì)為了幫助廣大技術(shù)愛好者對(duì)新版本有快速直觀的感受,制作了一款基于最新特性的容器管理工具,具備一定容器開發(fā)經(jīng)驗(yàn)的開發(fā)者可以通過它在第一時(shí)間體驗(yàn)的新特性??梢哉f,數(shù)人云是在技術(shù)能否持續(xù)下去的爭論中發(fā)布的工具。 showImg(https://segmentfault.com/img/bVD5g2?w=900&h=500);中秋節(jié)前, 數(shù)人云技術(shù)團(tuán)隊(duì)推出了一...
摘要:系統(tǒng)監(jiān)控容器數(shù)量容器監(jiān)控應(yīng)用監(jiān)控每個(gè)主機(jī)監(jiān)控?cái)?shù)量主機(jī)監(jiān)控項(xiàng)以主機(jī)為中心的監(jiān)控體系容器作為主機(jī),以主機(jī)為中心將有兩個(gè)問題無法解決容器作為主機(jī),因?yàn)槿萜魃芷诜浅6虝?,所以監(jiān)控系統(tǒng)會(huì)認(rèn)為一半主機(jī)在頻發(fā)故障。 導(dǎo)讀:容器對(duì)于物理機(jī)和虛擬機(jī),單從監(jiān)控上看就不是一個(gè)數(shù)量級(jí)的,但監(jiān)控又是至關(guān)重要的,沒有監(jiān)控如同閉眼開車。 本次分享邀請數(shù)人云運(yùn)維總監(jiān)龐錚,本文將從以下幾個(gè)方面聊聊容器監(jiān)控的相關(guān)思考...
摘要:第一部分的內(nèi)容介紹了如何部署配置和確保在的運(yùn)行。這一部分中,我們將介紹如何使用構(gòu)建容器,以及如何使用容器配置項(xiàng)目。除此之外,我們還將涉及如何用建立容器并部署到上。 這是我們使用GitLab和Rancher構(gòu)建CI/CD流水線系列教程的第二部分。第一部分的內(nèi)容介紹了如何部署、配置和確保GitLab在Rancher的運(yùn)行。這一部分中,我們將介紹如何使用GitLab CI Multi-Run...
摘要:集成測試完成后,由運(yùn)維同學(xué)從發(fā)起一個(gè)到分支,此時(shí)會(huì)會(huì)運(yùn)行單元測試,構(gòu)建鏡像,并發(fā)布到預(yù)發(fā)布環(huán)境測試人員在預(yù)發(fā)布環(huán)境下再次驗(yàn)證功能,團(tuán)隊(duì)做上線前的其他準(zhǔn)備工作運(yùn)維同學(xué)合并,將為本次發(fā)布的代碼及鏡像自動(dòng)打上版本號(hào)并書寫,同時(shí)發(fā)布到生產(chǎn)環(huán)境。 云原生 (Cloud Native) 是伴隨的容器技術(shù)發(fā)展出現(xiàn)的的一個(gè)詞,最早出自 Pivotal 公司(即開發(fā)了 Spring 的公司)的一本技術(shù)小...
閱讀 3390·2021-11-24 09:39
閱讀 3170·2021-11-23 09:51
閱讀 972·2021-11-18 10:07
閱讀 3610·2021-10-11 10:57
閱讀 2851·2021-10-08 10:04
閱讀 3081·2021-09-26 10:11
閱讀 1161·2021-09-23 11:21
閱讀 2986·2019-08-29 17:28