標題:15 Best Practices when working with Docker

連結:15 Best Practices when working with Docker | by Ali Zeynalli | Dec, 2022 | Medium

本篇文章作者根據經驗以及自身研究整理出了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大小並增加構建速度。