[Docker] 容器開發環境最佳實踐理論

 
保持 image 小
 
    選擇合適的 base image。
 
 
    若是多個 image 有共同之處,考慮建立一個 base image 來共享組件,並在其上構建 image。
 
    保持生產 image 小並支持 debug,考慮使用生產 image 做爲 base image 來 debug image。
 
    構建 image 時,老是使用 版本信息,目標環境(prod,test) 來打標籤,而不要依賴自動建立的 latest 標籤。
    
在哪裏和如何持久化應用數據
 
    不要把數據存儲在容器的可寫層,相比使用 volume 和綁定mounts,增長了 container 大小且I/O低效。
 
    做爲代替,使用 volumes 存儲數據。
 
    使用 bind mounts 更適合在開發期間。
 
    生產中使用 secrets 來存儲敏感數據,對非敏感數據使用 configs。
    
在可能的狀況下使用 swarm 服務
 
    可能的狀況下,使用 swarm 服務設計你的應用並具備規模化的能力。
 
    即便只須要運行一個獨立的應用實例,swarm services 提供了一些高級特性,servies 配置是說明性的,docker老是讓實際狀態與預期的保持同步。
 
    網絡和volumns 能夠在 swarm services 中鏈接和斷開,docker 使用非破壞的方式從新部署獨立的服務。獨立的容器須要根據配置改變手動中止刪除建立。
 
    若干特性,如存儲 secrets 和 configs 的能力,讓 image 儘量通用,image 和 container 不存儲敏感信息。
 
    讓 docker stack deploy 代替 docker pull,當新節點添加到 swarm,imags會自動被pull。
 
對測試和部署使用 CI/CD
 
    當版本控制檢測到變動或pull request,使用 Docker Cloud 或其餘 CI/CD 管道自動 build 和 tag image 並測試。Docker Cloud 能夠部署app直接到生產環境。
 
開發環境和生產環境的不一樣之處
 
 
 
相關文章
相關標籤/搜索