本篇文章是個經驗分享文,作者分享使用 Docker 作為開發環境時值得注意的 Best practices,透過這些經驗分享希望能夠讓開發者少走一些冤枉路。
原文提出了 15 個經驗談,這邊幫大家節錄幾個,有興趣的可以點選原文瞭解更多!
1. One thing at a time
2. Be ephemeral
3. Utilize .dockerignore
4. Less is more
5. Secrets should be secret
6. PID 1 is your birth right
7. Share and Care
8. Vulnerability Scan
9. Tag like you mean it
10. Permissions are costly
11. Source of Truth
12. Always official
13. Don’t include debug
14. Use entry point script smartly
15. Size does matter
One thing at a time
建置 Image 的時候專注做好一件事情,每個 Image 應該有一個專心要解決的問題,譬如一個應用程式,一個小工具等。對於 Nginx 這類型的 Image 來說,應該沒有人會期望於裡面看到有 Apache 的應用程式吧?
Be ephemeral
這個主要探討的是該 Image 本身建置時應該要以 stateless 的概念去處理,未來不論是透過 docker 或是 Kubernetes 來管理部署時,Contaienr 都很有機會被重啟,每次的重啟都意味該容器是重新啟動。所以千萬不要讓你的 Image 變成多次重啟會導致應用程式出問題的形式,任何的這類型資料應該都要透過外部取得,不要塞到你的 Image 內
Utilize .dockerignore
善用 .dockerignore 這個檔案來將不必要的檔案從 build 過程給排除,使用方法與 .gitignore 類似。透過這個檔案的設定可以避免 docker build 的時候不會把一些過大或是完全不需要的檔案都送給 docker daemon,不當浪費時間也浪費空間。
Less is more
避免安裝任何無關或是非必要的套件到你的 image 中,特別是那些 "nice to have" 的理由。
註: 我個人是滿討厭把 Image 弄得很乾淨的,除錯什麼工具都沒有,連 ash/sh/busybox/bash 都沒有的 image 更是我討厭中的排行榜冠軍
Secrets should be secret
任何機密資訊都應該要於運行期間動態載入,而不是建置期間塞入。請使用其他工具譬如 Vault 來管理這些機密資訊,並且執行期間讓 Container 能夠存取到正確的值。
PID 1 is your birth right
Linux 環境下會使用 SIGTERN, SIGKILL 等相關的 Singal 來戳你的應用程式,請確保你運行的應用程式要能夠攔截這些訊號來處理並完成有效的 Graceful shutdown.
Share and Care
如果環境中有多個 Image 彼此有共享相同的工具與功能,與其每個 Image 都單獨建置維護不如建置一個 Base Image,接者讓所有要使用的 image 去載入使用即可。
透過這種方式可以讓整體的維護性與管理性更為簡單,每個 image 可以減少重複的程式碼,同時要升級時只要針對 base Image 處理即可。
https://medium.com/pradpoddar/avoid-costly-mistakes-using-advanced-docker-development-best-practices-acd812784109
同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...
「docker linux安裝」的推薦目錄:
- 關於docker linux安裝 在 矽谷牛的耕田筆記 Facebook 的最佳解答
- 關於docker linux安裝 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
- 關於docker linux安裝 在 矽谷牛的耕田筆記 Facebook 的精選貼文
- 關於docker linux安裝 在 コバにゃんチャンネル Youtube 的精選貼文
- 關於docker linux安裝 在 大象中醫 Youtube 的精選貼文
- 關於docker linux安裝 在 大象中醫 Youtube 的最佳貼文
- 關於docker linux安裝 在 Ubuntu 18.04 安裝Docker (支援GPU) | 不務正業工程師的家 的評價
docker linux安裝 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
熟悉 Dockerfile 的讀者一定都熟悉撰寫 Dockerfile 的過程,其中很重要的一個環節是選擇一個 Base Image。
本篇文章的標題列舉的大量的 base image,包含了 alpine, slim, stretch ... 等,對於使用者來說,到底這些 image 差異是什麼,選擇上有什麼需要注意的
舉例來說, 當 image tag 結尾是 -slim 時,通常代表的是完整版本的相反體,也就是 只有安裝滿足應用所需要的依賴性套件而已,其餘用不到的都沒有安裝。
透過這方式整個 image 的大小也會相對比較小,畢竟用不到的軟體都沒有被安裝
作者提到說當使用 slim image 出現無法解釋的問題時,可以先嘗試使用完整版本的 image 先行除錯看看。
至於 Apline 的版本,則是基於 Alpine Linux Project 這個作業系統所發展的版本,其因為簡單且 image size 不大而廣受使用。但是使用上也是有很多要注意的地方,譬如一些相容性問題,作者提到 python 內就有 Debian/Alpine 彼此不相容的地方,導致除錯時會很生氣。
最後作者還提到選擇 image 的一些想法
1. 沒有硬碟空間的考量,要趕快上線使用且沒有時間慢慢測試,就直接使用知名的完整image,如 debian 等
2. 有硬碟空間考量且很明確要使用的工具是什麼,可以考慮使用 -slim 的版本
...等
原文:
https://medium.com/swlh/alpine-slim-stretch-buster-jessie-bullseye-bookworm-what-are-the-differences-in-docker-62171ed4531d
docker linux安裝 在 矽谷牛的耕田筆記 Facebook 的精選貼文
今天帶來的是一篇 Podman 的介紹文,有關注 Container 發展的讀者想必對於 Podman 這個詞一定很熟,然而有真的實際將 podman 導入日常工作流程的我想屈指可數。
本篇文章開頭針對 Podman 與 docker 的差異進行了簡單介紹,並且分析 Podman 透過
1) 沒有 Daemon, 2)不需要 Root 也可以運行 等特性帶來的好處。
接者針對 MacOS, Windows 等兩種不常見的平台介紹如何運行 Podman, 對於非 Linux 工作環境的讀者如果有想要嚐鮮使用 Podman 的話,非常推薦可以參考這篇文章的方式去使用與安裝
最最最重要的是,本篇文章是繁體中文所撰寫的,請大多多給予這類型的文章一點鼓勵,大家才會更有動力去分享各類技術文章,否則都只能看國外文章了:(
https://hazel.style/2021/01/14/How-to-use-Podman-in-Laptop-environments/
docker linux安裝 在 Ubuntu 18.04 安裝Docker (支援GPU) | 不務正業工程師的家 的推薦與評價
Docker 的基礎是Linux 容器(LXC)等技術。 ... 安裝. 系統環境. OS:Ubuntu 18.04; Docker:19.03; NVIDIA Container Toolkit:1.2.0 ... ... <看更多>