專訪程序員劉康:編程這件事,不曾擁有,也不曾遠離

Docker這一容器化技術目前正處於新浪潮的中心,這一浪潮波及了

應用的構建、打包和部署。它有可能影響計算機技術的方方面面,從應用程序的開發流程到應用程序如何部署以及跨大規模數據中心進行垂直和水平擴展。

儘管Docker非常流行,但它依然是一個非常新的項目,許多人並沒有真正理解什麼是Docker。

今天我們有幸請到了《深入淺出Docker》的譯者劉康老師,來聽聽他的所思所想。


專訪程序員劉康:編程這件事,不曾擁有,也不曾遠離


《深入淺出Docker》

作者:【英】Nigel Poulton(奈吉爾 波爾頓)

異步社區:可以介紹一下自己嗎?目前正在做哪些事情?

劉康:我是一枚年近不惑轉行IT的大齡北漂大叔。回想上學的時候就對代碼感興趣,喜歡自己捯飭點玩意兒,人送“C++小王子”、“Java小王子”之類的稱號,實則放到計算機學院連“兒童玩具”級別都算不上。

從讀研實習開始,在諮詢行業笑臉相迎地伺候各種甲方達五載有餘,帶給我的成長也是顯著的,工作中提升了快速學習能力,Office熟練到用VBA都能寫出俄羅斯方塊來,也主導過企業業務系統的建設。Coding這件事,不曾擁有,也不曾遠離,始終在心中是一件揮之不去的念想。

於是在2016年決定追求真愛,從浪潮信息開始了與IT的“甜蜜生活”,後來去過百度,目前在一家IT初創公司北京世紀誠鏈科技。

慶幸自己轉行還算及時,對“愛一行幹一行”和“興趣是最好的老師”有深切體會。現在主要關注DevOps、運維相關的領域。

異步社區:是什麼原因開始翻譯《深入淺出Docker》一書的?您是如何評價這本書的?

劉康:我是被老同事李瑞豐同學叫來翻譯的這本書。他是Java大牛,在對待技術方面很認真很執著,所以當時打過電話來說一起翻譯,我幾乎沒有猶豫,直接答應了。不過實話實說,大部分的翻譯工作是瑞豐同學完成的,我恰好工作上抽不開身拖了後腿,但是這段經歷很棒,對自己提升很大,如果有其他翻譯機會,還算會毫不猶豫的。

我認為這本書結合了入門書和教科書的優點,既通俗易懂,同時又系統而深入,無論是初學者還是有一定Docker基礎的,都可以從中得到提升。

異步社區:Docker於2017年秋髮布了第1版專業資質認證,稱為Docker認證工程師,《深入淺出Docker》中覆蓋了認證考試的所有知識點,對於想通過認證的讀者,您有哪些建議?

劉康:關注到該認證的讀者通常是具有一定Docker基礎和使用經驗的,我想有一點需要注意的是,由於DCA是Docker公司的認證,因此考點自然是覆蓋Docker企業工具集的內容,因此除了可能比較熟悉的關於鏡像、容器及其網絡的應用,還應關注用於編排和部署的Swarm、Stack,企業版工具UCP、UDT,以及諸如RBAC、DCT、DTR等企業級特性。

DCA是Docker官方的第一個認證,而《深入淺出Docker》也是至出版時第一本完整覆蓋該認證考試的系統書籍,想通過認證的讀者,建議從本書開始準備。

異步社區:本書作者Nigel Poulton,亞馬遜暢銷圖書作者,Docker Captains專家,存儲專家,Docker技術先驅,您覺得作者在業內的影響力有哪些?

劉康:(瑞豐的回答^_^)Nigel Poulton作為Docker社區的領軍人物,熟悉Docker相關技術並且熱衷分享。還著有Data Storage Networking,The Kubernetes Book,對操作系統和虛擬化技術有著深刻的理解。

Nigel在pluralsight上已經分享了16部容器相關的視頻教學資料,廣受好評,對Docker和容器的推廣發揮了重要作用。

異步社區:為什麼有人會選擇Docker而非大型二進制文件?

劉康:Docker相對來說有幾個顯著的優勢。

首先我想是在CI/CD中的應用,容器具有天然的環境標準化的特點,從而彌合了研發、測試和運維之間的隔閡,使得DevOps的概念真正得到技術層面的支持,從而極大提升了研發與部署的效率。尤其是對於運維人員來說,使用容器更加自動化,Kubernetes等編排工具的加持又進一步推動了容器技術的應用。

此外,正如其名,Docker具有很好的可移植性,能夠運行在多種不同的基礎平臺,就像一套傢俱家電放在不同的戶型中可能會不合適,但是如果幹脆開一輛五臟俱全的房車,甚至可以去到古城、草原、湖邊,而對比房車的比喻,Docker的好處是,相對於大型二進制文件來說,本質上還是進程,並未帶來顯著的成本提升,但是靈活度大大提升。此外,版本控制、滾動升級也是大型二進制文件難以企及的優勢。

對於向我這樣有系統潔癖症的人來說,Docker簡直是太大的福利了,它與米線攤總是喜歡把米線盛在套有塑料袋的碗中一樣,吃完連同塑料袋一丟,留下乾淨的碗。當然這比喻既不環保也不健康,不過運維人員的管理方式卻發生了類似的變化,對待集群中出現故障的節點,只需要自動化地kill掉容器從新起一個即可。而且這種隔離性也提高了安全性以及對於安全方面的可操作性。

異步社區:針對剛剛工作的小白,學習Docker您有哪些建議?

劉康:我覺得首先是要多動手,從使用者的角度,熟能生巧;過程中要深入理解計算、存儲和網絡方面的原理。然後結合Docker Compose、Docker Swarm、Kubernetes理解容器編排的使用。

最好能夠結合應用場景,比如自動化測試、自動化運維,使用Docker和相關編排工具簡化日常工作,提升團隊研發效率,能夠極大加深對容器應用的理解。

異步社區:您覺得運維從業人員的挑戰和新要求是什麼?

劉康:在現在互聯網和雲計算大行其道,持續集成與持續交付研發模式盛行的形勢下,DevOps和SRE這樣的先進運維理念越來越深入人心,運維的角色定位也在逐步發生變化,更加聚焦持續集成和發佈、場景化的自動化運維、智能監控等概念的應用與實踐,而傳統運維軟件逐漸難以適應運維的需求,運維人員也需要進行開發和平臺建設,不僅要掌握容器技術、容器編排技術、虛擬化技術等底層技術,還要關注如何基於這些底層技術將自動化與智能化運維落地。

異步社區:Docker的優勢是什麼?您覺得最適合應用在哪些場景?

劉康:除了前面第5個問題提到的標準化、可移植、隔離性、安全性等優勢以外,從研發的角度,由於Dockerfile、Compose文件、以及類似K8S這樣的容器雲管理平臺的部署腳本的存在,使得Code as Infrastracture稱為可能,比較適合用在測試與運維上。

測試方面,比如circleCI就是利用標準化的容器進行不同語言代碼的自動化測試,持續集成的執行過程使用腳本描述,並落地到容器中進行執行。

運維的話更加適合互聯網企業中更新迭代較快的大規模集群部署環境,通過灰度滾動發佈,有利於快速更新業務需求,而完善的智能監控與故障自愈也為大規模集群的管理提供了便利。

異步社區:對於 Docker 改名 Moby ,大家怎麼看?

劉康:從社區的普遍反映來看,跟多的人認為這個做法似乎有些過激了。

從商業角度,Docker公司處於產權保護,希望保有“Docker”這個詞,主要指Docker公司及其產品,將開源內容調整到Moby,Docker與Moby的關係就像Redhat和Fedora。

從技術角度來說,正如本書中所言,Docker項目已經被拆分為許多模塊,並且還在繼續拆分,Moby項目更多作為總成項目用於集成構建各個子模塊。

Docker的成功基於開源,以後仍將如此吧。

異步社區:Docker在web開發中得使用流程是怎樣的?

劉康:Docker的作用之一是統一開發環境,因此在開發、測試與部署階段應該使用一致的容器環境。該容器環境可以使用官方鏡像,也可以團隊自己構建鏡像,構建的鏡像的Dockerfile,以及搭建開發與測試環境的Docker Compose文件,應當作為代碼的一部分置於版本管理中。

開發人員提交代碼後,通常會觸發持續集成流水線,自動化的代碼檢查、單元測試、集成測試等過程都應該由專門的Docker鏡像啟動容器來執行。持續集成流水線成功執行後,可自動或半自動觸發持續交付。

交付部署的生產環境的容器鏡像應與集成測試和冒煙測試的鏡像一致,部署過程中藉助容器編排工具進行灰度發佈,通過AB測試觀察穩定性和用戶接受度,並逐漸滾動發佈實現全量上線。

異步社區:最後,給剛入行的小白推薦3本專業書,您最想推薦哪一本?

劉康:學習Docker的話推薦《我的第一本Docker書》、《深入淺出Docker》,官方文檔。

劉康:於2012年以自動化專業碩士學歷畢業於山東大學。同年7月作為技術諮詢顧問任職於埃森哲,客戶為全球前百強的大型央企,期間先後參與和主導了十餘個項目,主要側重於企業信息化管理和數據分析能力的提升。由於對IT技術的痴迷,決定轉行,並於2016年初加入浪潮信息,作為一名DevOps工程師,參與了項目組研發平臺的設計、建設與維護,組織培訓推動項目團隊過度到CI/CD研發模式。2017年7月加入百度工程教練團隊,負責支持手機百度研發團隊的工程能力提升。2018年4月至今,作為運維開發總監任職於初創公司北京世紀誠鏈科技,工作內容涉及DevOps、BaaS平臺建設、自動化測試、性能調優等方面。個人博客地址:https://blog.csdn.net/get_set。


專訪程序員劉康:編程這件事,不曾擁有,也不曾遠離

《深入淺出Docker》

作者:【英】Nigel Poulton(奈吉爾 波爾頓)

推薦理由:

  • 亞馬遜暢銷圖書作者,存儲專家,Docker技術先驅Nigel Poulton全新作品
  • 美亞操作系統排名第一的Docker入門書
  • 被業內譽為:高中生也能看得懂的經典入門書

本書是一本Docker入門圖書,全書分為17章,從Docker概覽和Docker技術兩部分進行全面解析,深入淺出地介紹了Docker的相關知識,清晰詳細的操作步驟結合大量的實際代碼幫助讀者學以致用,將Docker知識應用到真實的項目開發當中。


題圖來源:Hadi Malijani


- END -



分享到:


相關文章: