簡體   English   中英

構建 Docker 圖像的最佳方法

[英]Best way to build a Docker image

我剛剛開始學習 Docker。我有一個 nodeJs web 應用程序,並使用 2 個不同的 Dockerfile 構建了 2 個圖像。2 個圖像的大小確實不同。 有人能告訴我為什么即使它們使用相同的 alpine、node 和 npm 版本,它們的大小確實不同,構建 nodeJS 應用程序映像的推薦方法是哪一種?

第一個 Dockerfile 創建了一個 91.92MB 的圖像:

FROM alpine
RUN apk add --update nodejs npm curl
COPY . /src
WORKDIR /src
RUN npm install
EXPOSE 8080
ENTRYPOINT ["node", "./app.js"]

第二個 Dockerfile 創建了一個 259.57MB 的圖像:

FROM node:19-alpine3.16

RUN apk add --update npm curl

COPY . /src

WORKDIR /src

RUN npm install

CMD [ "node", "./app.js" ]

您開始使用的基本圖像會極大地影響您的最終圖像大小 - 假設您向每個基本圖像添加相同的東西。 在您的例子中,您正在比較基本的高山圖像(5.5mb)和基本節點圖像(174mb)。 基本的 alpine 圖像中只有很少的東西,而節點圖像——雖然基於 alpine——至少有節點,但可能還有很多額外的東西。 你是否需要額外的東西不是我說的。

如果您希望准確查看添加的內容,可以檢查用於構建任何這些公共映像的Dockerfile 您還可以使用dive等工具來檢查本地圖像層。

如果它滿足您的技術和非技術需求,使用預構建的node圖像可能更簡單,更容易更新,我通常會推薦使用它。

node圖像已經包含npm 您不必apk add它。 此外, Dockerfile不使用apk安裝 Node,而是從 tar 文件或源代碼安裝它。 所以apk add npm調用最終會安裝你不需要的 Node 的第二個完整副本; 這可能是兩個圖像尺寸的最大差異。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM