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