最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

減少Docker鏡像大小的10個優(yōu)化技巧

 更新時間:2024年01月05日 08:18:34   作者:狂野小青年  
當使用Docker時,鏡像大小是一個很大的問題,下面這篇文章主要給大家介紹了關(guān)于減少Docker鏡像大小的10個優(yōu)化技巧,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

什么是 docker?

Docker 是一種容器引擎,可以在容器內(nèi)運行一段代碼。Docker 鏡像是在任何地方運行您的應(yīng)用程序而無需擔心應(yīng)用程序依賴性的方式。

要構(gòu)建鏡像,docker 使用一個名為 Dockerfile 的文件。Dockerfile 是一個包含許多指令(RUN、COPY、EXPOSE 等)的文件。成功執(zhí)行這些命令后,docker 將創(chuàng)建一個鏡像供我們在任何地方使用。

為什么要減小 docker 鏡像大???

  • 安裝不必要的軟件包會增加攻擊面,從而增加安全風(fēng)險。
  • 鏡像傳輸需要更多時間。
  • 部署大鏡像需要更多時間。

我們必須以某種方式創(chuàng)建我們的 Dockerfile,以便從該 Dockerfile 構(gòu)建的鏡像在大小方面得到優(yōu)化。

在本文中,我們將討論 10 種減少 docker 鏡像大小的有效方法。

1、最小化鏡像層

我們可以減少 Dockerfile 中的層數(shù)。

dockerfile 中的每個 FROM、RUN、COPY 命令都會創(chuàng)建一個單獨的層,并增加鏡像的整體大小和構(gòu)建時間。

要減小 docker 鏡像大小,請在單個 RUN 或 COPY 指令中執(zhí)行多個命令來最小化 Dockerfile 中的層數(shù)。

FROM
ubuntu:latest
RUN
apt update - y
RUN
apt install unzip - y
RUN
apt install curl - y
RUN
apt install python3 - y

與其對每個命令使用單獨的指令,不如將它們組合起來:

FROM
ubuntu:latest
RUN
apt update -y && \
apt install unzip -y && \
apt install curl -y && \
apt install python3 -y

從下圖中可以看出,通過減少層數(shù),可以減少一些 MB 的大小。

2、使用 Docker Squash 減小鏡像大小

Docker 在構(gòu)建鏡像時創(chuàng)建了很多層。壓縮有助于在邏輯層中組織鏡像。我們可以控制鏡像的結(jié)構(gòu),而不是讓鏡像具有多個不必要的層。

您可以使用以下命令安裝 docker-squash。

pip install docker-squash

您可以運行以下命令來減小鏡像的大小。

docker-squash image:old -t image:new

3、使用較小的基礎(chǔ)鏡像

減小 docker 鏡像大小最明顯的方法是使用較小的基礎(chǔ)鏡像。

如果希望為 python 應(yīng)用程序創(chuàng)建鏡像,請考慮使用 python:3.9-slim 鏡像而不是 python:3.9。

python:3.9 的大小約為 1.3 GB,而 python:3.9-slim 的大小僅為 1 GB 左右。

您可以使用 alpine 版本進一步減少鏡像。alpine 鏡像是專門為作為容器運行而設(shè)計的,而且體積非常小。python:3.9-alpine 鏡像只有 49 MB。

4、使用多階段構(gòu)建來減小大小

為了顯著減小大小,我們可以使用 docker 多階段構(gòu)建的概念。這里我們使用不同的 images/Dockerfile 來構(gòu)建和打包應(yīng)用代碼。

它將 Dockerfile 分成多個階段,并將所需的工件從一個階段傳遞到另一個階段,然后在最后一個階段交付縮小鏡像大小的最終鏡像。它顯著減小鏡像尺寸。

# Official docker build image, Using node:14.17-alpine3.14 image for stage-1.
# Stage-1
FROM
node:
14.17
-alpine3.
14
as build
# Copy Required files
COPY
public /home/app/public/
COPY
src /home/app/src/
# dockerfile install multiple packages
RUN
apk add g++ make python2
RUN
npm install --silent
# Create Build
RUN
npm run build
RUN
apk --purge del python2
#Run the build by copying the files form previous stage.
# Stage-2
FROM
nginx:stable-alpine
COPY
nginx.conf /etc/nginx/conf.d/default.conf
COPY
--from=build /home/app/build /usr/share/nginx/html
EXPOSE
80
CMD
["nginx", "-g", "daemon off;"]

這里我們使用兩個階段從 docker 文件創(chuàng)建鏡像。在 Stage-1 中,我們復(fù)制代碼并構(gòu)建它,在 stage-2 中,我們使用在 stage-1 中構(gòu)建的代碼在 Nginx 中運行。

5、apt 安裝中使用 --no-install-recommends 標志

當我們運行 apt install 命令來安裝某些包時,它會安裝一些不需要的推薦包。使用 --no-install-recommends 標志可以顯著減小鏡像大小。

FROM
ubuntu:latest
RUN
apt update -y && \
apt install unzip -y --no-install-recommends && \
apt install curl --no-install-recommends -y && \
apt install python3 -y --no-install-recommends

如下圖所示,帶有 new 標簽的鏡像由于添加了此標志而減少了 5MB。當我們要安裝多個包時,這將非常有幫助。

您可以在 apk add 命令中添加 --no-cache。

6、在 apt install 命令后添加 rm -rf /var/lib/apt/lists/*

我們可以在 apt install 之后添加這個命令來減少 docker 鏡像的大小。

FROM
ubuntu:latest
RUN
apt update -y && \
apt install unzip -y --no-install-recommends && \
apt install curl --no-install-recommends -y && \
apt install python3 -y --no-install-recommends && \
rm -rf /var/lib/apt/lists/*

從上圖中可以看出,我們已將 docker 鏡像的大小減少了約 41 MB。

7、使用 .dockerignore 文件

如果您不想將某些文件復(fù)制到 docker 鏡像,那么使用 .dockerignore 文件可以為您節(jié)省一些空間。

在構(gòu)建上下文中有一些隱藏的文件/文件夾,您可以使用 ADD 或 COPY 命令(如 .git 等)將其傳輸?shù)界R像。包含一個 .dockerignore 文件以減小 docker 鏡像大小是一個很好的做法。

.dockerignore 文件示例。

ignorethisfile.txt
logs/
ignorethisfolder/
.git
.cache
*.md

8、在 RUN 之后放置 COPY

在某些情況下,您對代碼進行了細微的更改,并且需要反復(fù)從 dockerfile 構(gòu)建鏡像。

在這種情況下,將 COPY 命令放在 RUN 命令之后將有助于減小鏡像大小,因為在這種情況下 docker 將能夠更好地使用緩存功能。

它將為安裝了依賴項的鏡像創(chuàng)建緩存,每次更改代碼時,docker 都會使用該緩存并創(chuàng)建鏡像。它還將減少 docker 構(gòu)建時間。

#Dockerfile-1
FROM
ubuntu:latest
RUN
apt update -y && \
apt install unzip -y --no-install-recommends && \
apt install curl --no-install-recommends -y && \
apt install python3 -y --no-install-recommends && \
rm -rf /var/lib/apt/lists/*
COPY
file /home/ubuntu
#Dockerfile-2
FROM
ubuntu:latest
COPY
file /home/ubuntu
RUN
apt update -y && \
apt install unzip -y --no-install-recommends && \
apt install curl --no-install-recommends -y && \
apt install python3 -y --no-install-recommends && \
rm -rf /var/lib/apt/lists/*

在上述情況下,dockerfile-1 將能夠比 dockerfile-2 表現(xiàn)得更好。

9、安裝后刪除軟件包

如果您需要在 docker 鏡像中安裝一些包,并且您是從外部下載它們,那么最好在安裝后刪除這些包。

例如,如果您希望從 zip 文件安裝 AWS CLI V2,那么在成功安裝后請記住也刪除該 zip 文件。

FROM
ubuntu:latest
RUN
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && \
unzip awscliv2.zip && \
sudo ./aws/install && \
rm awscliv2.zip

10、使用 Docker 鏡像縮容工具

有幾個dockerfile 優(yōu)化工具可以幫助你減少 docker 鏡像的大小。下面列出了其中一些。

Dive:Dive 是一個開源工具,用于探索 Docker 鏡像及其層內(nèi)容,然后發(fā)現(xiàn)縮小 Docker/OCI 鏡像大小的方法。

  • https://github.com/wagoodman/dive

fromlatest.io:此工具將檢查您的 Dockerfile 并檢查可以執(zhí)行的更多步驟以減小鏡像大小。

  • https://www.fromlatest.io/

Docker Slim:它讓你的容器更好、更小、更安全。您可以使用dockerslim 來最小化容器鏡像。

總結(jié)

到此這篇關(guān)于減少Docker鏡像大小的10個優(yōu)化技巧的文章就介紹到這了,更多相關(guān)減少Docker鏡像大小內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker容器網(wǎng)絡(luò)端口配置過程詳解

    Docker容器網(wǎng)絡(luò)端口配置過程詳解

    這篇文章主要介紹了Docker容器網(wǎng)絡(luò)端口配置過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • Docker如何使用Dockerfile構(gòu)建鏡像

    Docker如何使用Dockerfile構(gòu)建鏡像

    本篇文章主要介紹了Docker如何使用Dockerfile構(gòu)建鏡像,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Docker service命令詳解(小結(jié))

    Docker service命令詳解(小結(jié))

    這篇文章主要介紹了Docker service命令詳解(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Docker中啟動Nacos的實現(xiàn)示例

    Docker中啟動Nacos的實現(xiàn)示例

    本文主要介紹了Docker中啟動Nacos的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • cordon節(jié)點drain驅(qū)逐節(jié)點delete節(jié)點詳解

    cordon節(jié)點drain驅(qū)逐節(jié)點delete節(jié)點詳解

    這篇文章主要為大家介紹了cordon節(jié)點drain驅(qū)逐節(jié)點delete節(jié)點詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • 一文教你如何清理Docker中閑置的鏡像,容器和卷

    一文教你如何清理Docker中閑置的鏡像,容器和卷

    在使用 Docker 的過程中,很容易積累大量未使用的鏡像、容器和數(shù)據(jù)卷,這些未使用的資源不僅占據(jù)輸出空間,還會消耗磁盤空間,下面我們就來看看如何清理吧
    2025-06-06
  • 詳解Docker目錄掛載的方法總結(jié)

    詳解Docker目錄掛載的方法總結(jié)

    本篇文章主要介紹了Docker目錄掛載的總結(jié),現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • Docker安裝Nginx教程實現(xiàn)圖例講解

    Docker安裝Nginx教程實現(xiàn)圖例講解

    這篇文章主要介紹了Docker安裝Nginx教程圖例講解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • Docker安裝FTP服務(wù)器的方法步驟

    Docker安裝FTP服務(wù)器的方法步驟

    FTP是一種傳輸協(xié)議,本文主要介紹了Docker安裝FTP服務(wù)器的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • 在Docker中開發(fā)Java 8 Spring Boot應(yīng)用程序的方法

    在Docker中開發(fā)Java 8 Spring Boot應(yīng)用程序的方法

    在本文中,我將向您展示如何使用Java 8開發(fā)和運行簡單的Spring Web應(yīng)用程序,而無需在本地計算機上安裝Java 8。感興趣的朋友跟隨小編一起看看吧
    2019-10-10

最新評論

浦城县| 保定市| 安宁市| 青龙| 格尔木市| 黔西| 吴川市| 茂名市| 闻喜县| 西林县| 肃南| 梧州市| 尚志市| 兴安县| 凤山市| 恭城| 章丘市| 民丰县| 常熟市| 湛江市| 澜沧| 屏东县| 同德县| 泽普县| 毕节市| 双桥区| 屯门区| 富宁县| 新野县| 浙江省| 侯马市| 中宁县| 龙门县| 石首市| 通化县| 屏东市| 甘南县| 福贡县| 六盘水市| 武穴市| 五寨县|