標題:15 Best Practices when working with Docker
本篇文章作者根據經驗以及自身研究整理出了15個使用Docker的技巧與提示
1. 進行中的工作不應保存在未命名、已停止的容器中
如果進行中的工作保存在不好的容器中,可能會導致資料丟失、風險以及安全問題、不利於協作
2. 定期清理Image
幫助釋放存儲空間,優化Docker引擎性能,減少安全風險,以及維持主機整潔,易於管理。
3. 使用授權的相依套件
可以帶來更好的合法性、安全性、可靠性、支持性和法律責任。
4. 將變化很大的部分放在 DockerFile 的末尾
因為Docker會將每個步驟緩存為一個單獨的容器,重複的操作將不會重新執行,將變化較大的部分放在最後可提高性能
5. 不要在容器啟動時就獲取相依套件
避免在容器啟動時獲取依賴包帶來的問題,並提高容器的啟動速度和可管理性。最佳實踐是在構建Image時就獲取依賴包,並將它們打包到Image中。另外,還可以使用多階段構建和緩存等技術來優化構建過程,提高構建速度和效率。
6. 不要掛載共享資料夾
有助於提高容器的可移植性、安全性、可重現性和可管理性。
7. 保持Image simple and small
可以提高應用程序的可移植性、降低安全風險、減少Image大小、提高Image構建和管理效率。
8. 從頭開始構建
最大限度地減少相依
9. Tag Image
使用合理的Tag,有助於對Image進行排序
10. 使用小型基礎Image
例如-slim或-alpine,可以帶來更明確的依賴項、更少的儲存、更少的安全漏洞和攻擊面以及更快的構建時間。
11. 使用官方Image
帶來可靠性、安全性、活躍的社群支持以及易用性等好處。
12. 創建臨時容器
Dockerfile定義的Image應該盡可能是臨時的,提供隔離環境、避免依賴衝突、快速清理、易於重複,提高工作效率與可靠性,方便快速測試,不必擔心對主機有影響。
13. 使用multi-stage構建
幫助減小Docker Image的大小,優化構建速度,簡化構建過程,以及提高Docker Image的安全性。
14. 將多行參數進行排序
將多個RUN命令組合起來,減少Image層數、構建時間、優化Image緩存、增加Dockerfile可讀性。
15. 使用.Dockerignore
從構建中排除不必要的文件,減少Image大小並增加構建速度。