一。運維角度:
(一)鏡像:
1. 避免依賴過深。不要在基礎鏡像上加太多產生其他的鏡像,我覺得這塊最多是三四層。
一層是base景像再往上是工具、中間件這樣的,再往上一層就是你自己的程序,再多就比較亂了。
Base image是CentOS 7
2. 鏡像越小越好,消耗的資源越少越好
3. 根據應用的差異化,建多個基礎鏡像
4. 鏡像構建這塊,一定要從Dockerfile生成,這樣做最大的好處是可以通過Dockerfile“閱讀”鏡像。
在后續的協作、升級維護等方面會帶來巨大的便利。如果不從Dockerfile生成,以后更新、回滾是很麻煩的。
我用Dockerfile生成的時候,其他的人可以通過Dockerfile或者鏡像就可以閱讀這個鏡像是怎么來的。
哪個鏡像是base鏡像,中間加了哪些軟件,運行什么東西
5.鏡像管理這塊,雖然我們應用的是原生的,但是這幾項只要跟數據有關系的都要考慮。
單點問題,暫時我們用的是一台機器,不是很安全,對應的解決方案可以考慮DRBD、分布式存儲以及雲存儲。
性能問題,主要是下載加速,目前可用的解決方案是通過HTTP反向代理緩存來加速Layer的下載。
權限問題,可以用Nginx LUA提供一個簡單快速的實現方案
(二)日志管理:
日志管理的話,如果把日志放在容器里面,由於容器是無狀態的,所以存儲在容器內的日志會隨着容器的銷毀而消失。
你要把日志實時保存下來,或者把日志放在宿主機,但是放在宿主機的話,有點違反Docker化不依賴宿主機的任何環境的要求。
建議放一些日志收集工具如Logstash或者Flume等。
(三)RC配置
1. 多實例運行,我們的機器可夠跑多個實例的,啟動的時候每個實例的占的內存和CPU都要考慮一下
(四)內核參數的調整:
1. ulimit
2. dns
3. ....
二。開發角度:
(一)
1. 程序放在容器里的話,這個程序至少應該是無狀態的,不能依賴於宿主機的一切環境,如目錄、IP
2. 以前如果用正常開發的話,root是不讓用的,用Docker就可以