Docker這一容器化技術目前正處於新浪潮的中心,這一浪潮波及了應用的構建、打包和部署。它有可能影響計算機技術的方方面面,從應用程序的開發流程到應用程序如何部署以及跨大規模數據中心進行垂直和水平擴展。
web
儘管Docker很是流行,但它依然是一個很是新的項目,許多人並無真正理解什麼是Docker。安全
今天咱們有幸請到了《深刻淺出Docker》的譯者劉康老師,來聽聽他的所思所想。網絡
《深刻淺出Docker》運維
做者:【英】Nigel Poulton(奈吉爾 波爾頓)異步
譯者:李瑞豐 劉康工具
劉康:我是一枚年近不惑轉行IT的大齡北漂大叔。回想上學的時候就對代碼感興趣,喜歡本身捯飭點玩意兒,人送「C++小王子」、「Java小王子」之類的稱號,實則放到計算機學院連「兒童玩具」級別都算不上。性能
從讀研實習開始,在諮詢行業笑臉相迎地伺候各類甲方達五載有餘,帶給個人成長也是顯著的,工做中提高了快速學習能力,Office熟練到用VBA都能寫出俄羅斯方塊來,也主導過企業業務系統的建設。Coding這件事,未曾擁有,也未曾遠離,始終在心中是一件揮之不去的念想。單元測試
因而在2016年決定追求真愛,從浪潮信息開始了與IT的「甜蜜生活」,後來去過百度,目前在一家IT初創公司北京世紀誠鏈科技。慶幸本身轉行還算及時,對「愛一行幹一行」和「興趣是最好的老師」有深切體會。如今主要關注DevOps、運維相關的領域。學習
劉康:我是被老同事李瑞豐同窗叫來翻譯的這本書。他是Java大牛,在對待技術方面很認真很執着,因此當時打過電話來講一塊兒翻譯,我幾乎沒有猶豫,直接答應了。不過實話實說,大部分的翻譯工做是瑞豐同窗完成的,我剛好工做上抽不開身拖了後腿,可是這段經歷很棒,對本身提高很大,若是有其餘翻譯機會,還算會絕不猶豫的。測試
我認爲這本書結合了入門書和教科書的優勢,既通俗易懂,同時又系統而深刻,不管是初學者仍是有必定Docker基礎的,均可以從中獲得提高。
劉康:關注到該認證的讀者一般是具備必定Docker基礎和使用經驗的,我想有一點須要注意的是,因爲DCA是Docker公司的認證,所以考點天然是覆蓋Docker企業工具集的內容,所以除了可能比較熟悉的關於鏡像、容器及其網絡的應用,還應關注用於編排和部署的Swarm、Stack,企業版工具UCP、UDT,以及諸如RBAC、DCT、DTR等企業級特性。
DCA是Docker官方的第一個認證,而《深刻淺出Docker》也是至出版時第一本完整覆蓋該認證考試的系統書籍,想經過認證的讀者,建議從本書開始準備。
劉康:(瑞豐的回答^_^)Nigel Poulton做爲Docker社區的領軍人物,熟悉Docker相關技術而且熱衷分享。還著有Data Storage Networking,The Kubernetes Book,對操做系統和虛擬化技術有着深入的理解。
Nigel在pluralsight上已經分享了16部容器相關的視頻教學資料,廣受好評,對Docker和容器的推廣發揮了重要做用。
劉康:Docker相對來講有幾個顯著的優點。
首先我想是在CI/CD中的應用,容器具備自然的環境標準化的特色,從而彌合了研發、測試和運維之間的隔閡,使得DevOps的概念真正獲得技術層面的支持,從而極大提高了研發與部署的效率。尤爲是對於運維人員來講,使用容器更加自動化,Kubernetes等編排工具的加持又進一步推進了容器技術的應用。
此外,正如其名,Docker具備很好的可移植性,可以運行在多種不一樣的基礎平臺,就像一套傢俱家電放在不一樣的戶型中可能會不合適,可是若是乾脆開一輛五臟俱全的房車,甚至能夠去到古城、草原、湖邊,而對比房車的比喻,Docker的好處是,相對於大型二進制文件來講,本質上仍是進程,並未帶來顯著的成本提高,可是靈活度大大提高。此外,版本控制、滾動升級也是大型二進制文件難以企及的優點。
對於向我這樣有系統潔癖症的人來講,Docker簡直是太大的福利了,它與米線攤老是喜歡把米線盛在套有塑料袋的碗中同樣,吃完連同塑料袋一丟,留下乾淨的碗。固然這比喻既不環保也不健康,不過運維人員的管理方式卻發生了相似的變化,對待集羣中出現故障的節點,只須要自動化地kill掉容器重新起一個便可。並且這種隔離性也提升了安全性以及對於安全方面的可操做性。
劉康:我以爲首先是要多動手,從使用者的角度,熟能生巧;過程當中要深刻理解計算、存儲和網絡方面的原理。而後結合Docker Compose、Docker Swarm、Kubernetes理解容器編排的使用。
最好可以結合應用場景,好比自動化測試、自動化運維,使用Docker和相關編排工具簡化平常工做,提高團隊研發效率,可以極大加深對容器應用的理解。
劉康:在如今互聯網和雲計算大行其道,持續集成與持續交付研發模式盛行的形勢下,DevOps和SRE這樣的先進運維理念愈來愈深刻人心,運維的角色定位也在逐步發生變化,更加聚焦持續集成和發佈、場景化的自動化運維、智能監控等概念的應用與實踐,而傳統運維軟件逐漸難以適應運維的需求,運維人員也須要進行開發和平臺建設,不只要掌握容器技術、容器編排技術、虛擬化技術等底層技術,還要關注如何基於這些底層技術將自動化與智能化運維落地。
劉康:除了前面第5個問題提到的標準化、可移植、隔離性、安全性等優點之外,從研發的角度,因爲Dockerfile、Compose文件、以及相似K8S這樣的容器雲管理平臺的部署腳本的存在,使得Code as Infrastracture稱爲可能,比較適合用在測試與運維上。
測試方面,好比circleCI就是利用標準化的容器進行不一樣語言代碼的自動化測試,持續集成的執行過程使用腳本描述,並落地到容器中進行執行。
運維的話更加適合互聯網企業中更新迭代較快的大規模集羣部署環境,經過灰度滾動發佈,有利於快速更新業務需求,而完善的智能監控與故障自愈也爲大規模集羣的管理提供了便利。
劉康:從社區的廣泛反映來看,跟多的人認爲這個作法彷佛有些過激了。
從商業角度,Docker公司處於產權保護,但願保有「Docker」這個詞,主要指Docker公司及其產品,將開源內容調整到Moby,Docker與Moby的關係就像Redhat和Fedora。
從技術角度來講,正如本書中所言,Docker項目已經被拆分爲許多模塊,而且還在繼續拆分,Moby項目更多做爲總成項目用於集成構建各個子模塊。
Docker的成功基於開源,之後仍將如此吧。
劉康:Docker的做用之一是統一開發環境,所以在開發、測試與部署階段應該使用一致的容器環境。該容器環境可使用官方鏡像,也能夠團隊本身構建鏡像,構建的鏡像的Dockerfile,以及搭建開發與測試環境的Docker Compose文件,應看成爲代碼的一部分置於版本管理中。
開發人員提交代碼後,一般會觸發持續集成流水線,自動化的代碼檢查、單元測試、集成測試等過程都應該由專門的Docker鏡像啓動容器來執行。持續集成流水線成功執行後,可自動或半自動觸發持續交付。
交付部署的生產環境的容器鏡像應與集成測試和冒煙測試的鏡像一致,部署過程當中藉助容器編排工具進行灰度發佈,經過AB測試觀察穩定性和用戶接受度,並逐漸滾動發佈實現全量上線。
劉康:學習Docker的話推薦《個人第一本Docker書》、《深刻淺出Docker》,官方文檔。
劉康:於2012年以自動化專業碩士學歷畢業於山東大學。同年7月做爲技術諮詢顧問任職於埃森哲,客戶爲全球前百強的大型央企,期間前後參與和主導了十餘個項目,主要側重於企業信息化管理和數據分析能力的提高。因爲對IT技術的癡迷,決定轉行,並於2016年初加入浪潮信息,做爲一名DevOps工程師,參與了項目組研發平臺的設計、建設與維護,組織培訓推進項目團隊過分到CI/CD研發模式。2017年7月加入百度工程教練團隊,負責支持手機百度研發團隊的工程能力提高。2018年4月至今,做爲運維開發總監任職於初創公司北京世紀誠鏈科技,工做內容涉及DevOps、BaaS平臺建設、自動化測試、性能調優等方面。我的博客地址:https://blog.csdn.net/get_set。
做者:【英】Nigel Poulton(奈吉爾 波爾頓)
譯者:李瑞豐, 劉康
推薦理由:
亞馬遜暢銷圖書做者,存儲專家,Docker技術先驅Nigel Poulton全新做品
美亞操做系統排名第一的Docker入門書
被業內譽爲:高中生也能看得懂的經典入門書
本書是一本Docker入門圖書,全書分爲17章,從Docker概覽和Docker技術兩部分進行全面解析,深刻淺出地介紹了Docker的相關知識,清晰詳細的操做步驟結合大量的實際代碼幫助讀者學以至用,將Docker知識應用到真實的項目開發當中。
題圖來源:Hadi Malijani
- END -