開發(fā)環(huán)境與生產環(huán)境中的Docker--第二篇

開發(fā)環(huán)境與生產環(huán)境中的Docker--第二篇

成都創(chuàng)新互聯(lián)是一家以網絡技術公司,為中小企業(yè)提供網站維護、成都網站設計、網站制作、外貿營銷網站建設、網站備案、服務器租用、域名注冊、軟件開發(fā)、微信小程序定制開發(fā)等企業(yè)互聯(lián)網相關業(yè)務,是一家有著豐富的互聯(lián)網運營推廣經驗的科技公司,有著多年的網站建站經驗,致力于幫助中小企業(yè)在互聯(lián)網讓打出自已的品牌和口碑,讓企業(yè)在互聯(lián)網上打開一個面向全國乃至全球的業(yè)務窗口:建站歡迎來電:18982081108

對于大多數團隊而言,采用Docker主要是為了讓開發(fā)人員更快地迭代和縮短發(fā)布周期,這對于開發(fā)環(huán)境是非常有益的,但對于生產環(huán)境,在同一臺服務器上運行多個Docker容器,可能會導致安全方面的漏洞。事實上,幾乎所有關于在生產環(huán)境中運行Docker的話題,都是圍繞著將開發(fā)環(huán)境與生產環(huán)境區(qū)分開來進行的:一是編排,二是安全。


在生產環(huán)境中,Docker有時是用于接收公共網絡流量的容器,有時則是用來處理來自負荷的異步后臺作業(yè),不管哪種用途,在生產環(huán)境中運行Docker與在其他環(huán)境中運行相比,最主要的差異就是都需要在其安全性與穩(wěn)定性上投入較多的注意力。Docker生產環(huán)境很難管理,它簡化了從開發(fā)到生產的工作流程,但同時增加了安全和編排的復雜度。所有在生產環(huán)境中運行Docker的團隊,都會在傳統(tǒng)的安全最佳實踐上做出一項或多項妥協(xié)。如果無法完全信任容器內運行的代碼,那么就只得選用容器與虛擬機一對一的拓撲方式。對于很多團隊而言,在生產環(huán)境中運行Docker的優(yōu)勢遠遠大于其帶來的安全與編排問題。


哪些東西不要Docker化?不要期望能在Docker容器中運行所有的東西。Herok風格的“十二要素”應用是最容易Docker化的,因為它們不維護狀態(tài)。在理想的微服務環(huán)境中,容器能在幾毫秒內啟動、停止而不影響集群的健康或應用程序的狀態(tài)。Docker還不適用于任何需要動態(tài)調整CPU和內存要求的應用。允許動態(tài)調整的代碼已經完成,但尚不清楚何時才能在一般的生產環(huán)境中投入使用。目前,若對被容器的CPU和內存的限制進行調整,需要停止并重新啟動容器。另外,對網絡吞吐量有高要求的應用進行最佳優(yōu)化時不要使用Docker,因為Docker使用iptables來完成宿主機IP到容器IP的NAT轉換,通過禁用Docker的NAT來提升網絡性能是可行的,但這是一個高級使用場景,很少有團隊會在生產環(huán)境中這么做。


Docker最好的使用方式是將應用程序代碼預先打包成一個Docker鏡像,鏡像通常包含所有的應用程序代碼、運行時的依賴及系統(tǒng)的需求,而包含數據庫憑證和其他敏感信息的配置文件通常在運行時添加,而非內建到鏡像中。有些團隊會在開發(fā)機上手工構建Docker鏡像,然后推送到鏡像倉庫,之后再從倉庫中拉取鏡像到生產環(huán)境宿主機中,這是個很簡單的用例,雖然行得通,但從工作流和安全角度考慮并不理想。一個更常見的生產環(huán)境示例是,使用持續(xù)集成/持續(xù)交付系統(tǒng)在應用程序代碼或Dockerfile文件發(fā)生變更時自動構建新鏡像。


最近幾年,科技發(fā)展迅速,從物理服務器到虛擬服務器,從虛擬服務器到擁有PaaS環(huán)境的云計算,無論是否采用了全新架構,Docker鏡像都可以在當前環(huán)境中很容易地被使用,要使用Docker,并不需要立即從單體應用程序遷移到面向服務架構,有很多用命允許在不同層次上集成Docker,以下是Docker常用的場景:

    。使用以鏡像為基礎的部署方式取代常規(guī)代碼部署系統(tǒng);

    。安全地在同一臺服務器上運行遺留應用和新應用;

    。使用一個工具鏈循序漸進地遷移到面向服務架構;

    。管理云端或裸機上的水平擴展和彈性;

    。確保從開發(fā)環(huán)境到預演環(huán)境再到生產環(huán)境的一致性;

    。簡化開發(fā)人員的機器設置和一致性;


將應用的后臺程序遷移到Docker集群中,同時保持網頁服務器和數據庫服務器不變是開始使用Docker常見示例。另一示例是將應用的部分Restful Api遷移到Docker中運行,前端使用Nginx代理在遺留服務和Docker集群之間路由通信,通過使用此類技術,團隊可以漸進式地從單體應用無縫地遷移到面向服務架構。如今的應用程序往往需要幾十個第三方庫,用于加速功能開發(fā)或連接第三方SaaS和數據庫服務。每個庫都可能產生BUG,或是讓用戶陷入版本依賴的泥沼,再加上庫頻繁更改,要在基礎設施上完成工作代碼的持續(xù)部署而不引起失敗,壓力巨大。Docker可貴的鏡像思想使得技術團隊在部署工作代碼時,不論是單體架構、面向服務或是二者的混合,由于代碼及其依賴捆綁在同一個鏡像中,所使用的方式對每次部署都是可測試、可重復、文檔化且一致的,一旦一個鏡像構建完畢,就可以部署到任意多個運行著的Docker守護進程的服務器上。另外一個常見的Docker用例是跨環(huán)境部署一個單一容器,其典型的代碼路徑是從開發(fā)環(huán)境到預演環(huán)境再到生產環(huán)境,容器為整個代碼路徑提供了一個一致的、可測試的環(huán)境。作為一個開發(fā)人員,Docker模型允許在其個人電腦上調試與生產環(huán)境完全一致的代碼,開發(fā)人員可以很容易地下載、運行和調試有問題的生產環(huán)境鏡像,且無需事先對本地開發(fā)環(huán)境進行修改。



標題名稱:開發(fā)環(huán)境與生產環(huán)境中的Docker--第二篇
分享鏈接:http://muchs.cn/article4/ihjioe.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站營銷、網站導航、微信公眾號定制開發(fā)、App開發(fā)、網站收錄

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

外貿網站制作