今天這篇文章是作者工作多年來,對於 Dockerfile 的一些想法與學習到的經驗,主要內容是講述到底如何最佳化 Dockerfile 的內容,實作上有哪些底可以參考與注意
1. 利用 Cache 的概念來加速建置的時間,最明顯的範例就是 RUN 這個指令,很常看到大家會透過一次 RUN 指令來安裝全部使用的套件,而非每個指令單獨一個 RUN,後者會產生眾多的的 Layer 數量
2. 沒有使用到的套件就不需要安裝,盡量保持精準原則,只安裝必要的相依性套件。這過這些階段可以節省一些 Image 大小,對於未來下載與部署都能夠有一些速度上的提升
3. 採用官方的 image 作為 base image,這部分的安全性會更佳保證,同時內容也會有專門團隊維護。此外 tag 部份也要注意不要使用 latest,最好能夠針對需求去固定版本,以免上游更新後,重新建置的 image 產生出不同的執行結果,這時候除錯也很麻煩
4. 採用 Multi-stage 的方式來建置你的環境,最常見的範例就是將編譯環境與執行環境分開。第一個 Stage 先準備建置環境,安裝相關的工具最後編譯出執行檔案,接者把該檔案複製到第二個 Stage 去單純執行即可
除了這些外,也有些滿常見的概念譬如,能的話盡量透過 USER 去指定使用者,而不是採用 root 的方式直接碾壓過去。
至於要不要使用 Alpine ,這部分見仁見智,畢竟 Alpine 某些版本會有些問題,特別是 Kubernetes 內可能會有 DNS 查詢的問題
我個人是非常討厭精簡化的容器,因為當發生問題想要進去看的時候,連一些工具都沒有,有的連 shell 都沒有,完全不給人除錯用
https://blog.bitsrc.io/best-practices-for-writing-a-dockerfile-68893706c3
同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...
dockerfile指令 在 コバにゃんチャンネル Youtube 的最佳貼文
dockerfile指令 在 大象中醫 Youtube 的最讚貼文
dockerfile指令 在 大象中醫 Youtube 的精選貼文
dockerfile指令 在 Docker - Dockerfile 指令教學,含範例解說 - 靖技場 的相關結果
基本上Dockerfile是由一行一行的指令列所組成,一行指令對Image來說就是一層的資料層(Layer),一個Image就是靠這樣一層一層的資料累加上去,最後才 ... ... <看更多>
dockerfile指令 在 Docker 初探:基本指令與簡單介紹Dockerfile 和docker-compose 的相關結果
TL;DR. 本文不會有太多語法說明,打算介紹:. Docker 的前世今生; Container 名稱由來; 如何運行基本的Docker 指令; 簡單介紹Dockerfile 和docker-compose 的用途( ... ... <看更多>
dockerfile指令 在 指令 - 《Docker —— 從入門到實踐》正體中文版 的相關結果
指令 的一般格式為 INSTRUCTION arguments ,指令包括 FROM 、 MAINTAINER 、 RUN ... 並且,如果在同一個Dockerfile中建立多個映像檔時,可以使用多個 FROM 指令(每個 ... ... <看更多>