來自OSCON上最受歡迎Docker演講的五個技巧
本文介紹了上個月OSCON大會有關Docker***的一個分享:真實線上環境的Docker技巧。分享者是一名運維工程師叫Bridget,她所在的公司DramaFever在2013年10月開始在線上環境部署使用Docker。然而那個時候,Docker官網還掛著“請勿在線上環境使用”的警示條。從2013年到現在,DramaFever積累大量Docker線上使用的實際經驗。這些經驗的分享,吸引了大量的與會者,當天會場爆滿,組織者只好請Bridget第二天再講了一遍。可見這個分享還是蠻有價值,這篇博文介紹的有些過于簡單,有興趣的話,可以直接去讀她的演講稿或者當天的視頻。
上個月在波特蘭舉行的OSCON開源大會上,有關Docker和容器的分享最令人印象深刻的,一定會是Bridget Kromhout的“線上環境使用Docker,真實不炒作”。整個會場爆滿,只剩下站的地方,后來者都被擠到門外面。組織者只好請Bridget第二天再講了一遍。
毫無疑問,Docker非常非常的火,Bridget帶來她對DevOps和容器化的深度經驗:她是一名運維工程師,博主,演講者,明尼阿波利斯DevOps日的組織者,也是”被捕獲的DevOps“頻道的主持人。
Bridget的公司,DramaFever,自2013年10月開始在線上環境使用Docker,那個時候Docker官網上還寫著警示語:"不要在線上環境使用Docker"。DramaFever是一家流媒體視頻公司,起初播放韓國的肥皂劇,現在給docclub.com和shudder.com提供額外的視頻服務。目前有來自70個內容提供商的15000集電視劇,將近2000萬的觀看者。高峰時刻,公司要處理來自不同的終端每秒上萬次的請求--觀看者會經常在節目中間切換終端設備。
為了能夠滿足上述需要且提供好的用戶體驗,DramaFever將原先單體的Python應用拆分成了微服務。整個團隊在AWS上面運行服務,主網站使用Python,微服務用Go語言。DramaFever依賴Docker來提供持續的開發和部署。
在線上環境改用Docker的過程中,Bridget和她的團隊學到了很多教訓。下面五個主要的經驗,是她在OSCON上分享的。
1.小心Docker Registry過度負載
DramaFever開始它的容器旅程之時,Docker還沒有私有的Registry,但是他們對這點很不滿意:Registry在 Docker中成為不被控制的單點故障源。DramaFever網站當時依賴于Jenkins機器上部署的單個Registry服務器,可是,當多于20 個機器需要使用時,Registry就出故障了。現在DramaFever的每臺EC2機器(甚至筆記本)上都會運行著一個私有的registry容器,并輔以AWS S3作存儲。這個解決方案不需要占用很多的資源,而且能解決機器擴充的瓶頸。
2.編制自己的基礎鏡像
為了保證Docker的鏡像是***的,DramaFever的運維團隊每周都會嘗試更新“基礎鏡像”,包括不頻繁的依賴變化,比如Ubuntu包依賴或者Python的依賴文件等等。其他的部分都是基于這些鏡像,所以啟動會非常快。
3.避免有問題的線上推送
一定要確保沒有人知道在線上環境能夠執行 docker push 命令的賬號和密碼。我們要保證這些命令只會在Jenkins服務器觸發。這樣可以避免在沒有其他人在場的情況下,發生有問題的線上環境推送。
4.記得清理
容器和鏡像都會占用大量的硬盤空間。如果Docker源碼區空間被用光,“非常非常糟糕的情況就會發生,甚至會導致硬盤的損壞”,Bridget解釋道。她建議每天執行一個腳本來移除停掉且無標識的容器和鏡像。
5.注意你的系統時間
AWS S3服務對你的系統時間非常在意。不幸的是,盡管boot2docker這款應用可以讓Docker運行在Windows和MacOS環境,但如果你的筆記本開始休眠,這個應用將不能正常工作,因為虛擬機里的系統時鐘會停滯。這時,任何AWS API請求會得到RequestTimeTooSkewed的錯誤。為了解決這個問題,所有DramaFever的工具都包含這行代碼:
- ` boot2docker ssh sudo date --set \"$(env TZ=UTC date '+%F %H:%M:%S')\"
這是一個已知的問題,boot2docker正在修正。
Bridget的觀點對于正在考慮線上使用Docker的人來說,非常有價值。你可以瀏覽一下她的演講稿,讀讀她的博客文章。
其中最重要的是,雖然Docker很偉大,不過也沒那么神奇。容器提供了一些非常酷的且引人注目的優點,但是就如同任何新技術一樣,Docker需要我們盡職研究,以確保它會正常工作,并滿足特定環境的需求。
Tori Wieldt是New Relic的攻城獅激勵師,她寫博客,在New Relic的用戶組演講,并給New Relic開發者提供建議和培訓。之前她一直在科技界,是一名系統管理員,技術作家和銷售。
譯者介紹:
Henry Huang,目前供職于趨勢科技 Trend Micro(南京),負責集群運維的工作。