色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

重點討論如何優化Docker鏡像以使其輕量化

馬哥Linux運維 ? 來源:The Agile Crafter ? 2023-02-25 16:06 ? 次閱讀

Docker簡介

Docker 是一個供軟件開發人員和系統管理員使用容器構建、運行和與分享應用程序的平臺。容器是在獨立環境中運行的進程,它運行在自己的文件系統上,該文件系統是使用 docker 鏡像構建的。鏡像中包含運行應用程序所需的一切(編譯后的代碼、依賴項、庫等等)。鏡像使用 Dockerfile 文件定義。

術語 dockerization 或 containerization 通常用于定義創建 Docker 容器的過程。

因為容器具備如下優點,所以很受歡迎:

靈活性:即使是最復雜的應用程序也可以容器化。

輕量化:容器共享主機內核,使得它們遠比虛擬機高效。

便攜性:可以做到本地編譯,到處運行。

耦合:容器自我封裝,一個容器被替換或升級不會打斷別的容器。

安全性:容器對進程進行了嚴格的限制和隔離,而無需用戶進行任何配置。

在這篇文章中,我將重點討論如何優化 Docker 鏡像以使其輕量化。

優化過程

讓我們從一個示例開始,在該示例中,我們構建了一個 React 應用程序并將其容器化。

運行 npx 命令并創建 Dockerfile 之后,我們得到了下圖所示的文件結構。

npxcreate-react-appapp--templatetypescript

49b81568-b392-11ed-bfe3-dac502259ad0.png

如果我們構建一個基礎的 Dockerfile(如下所示),我們最終會得到一個 1.16 GB 的鏡像:

FROMnode:10
WORKDIR/app
COPYapp/app
RUNnpminstall-gwebserver.local
RUNnpminstall&&npmrunbuild
EXPOSE3000
CMDwebserver.local-d./build

49cbd4ea-b392-11ed-bfe3-dac502259ad0.png

第一步優化:使用輕量化基礎鏡像

在 Docker Hub(公共 Docker 倉庫)中,有一些鏡像可供下載,每個鏡像都有不同的特征和大小。

通常,相較于基于其他 Linux 發行版(例如 Ubuntu)的鏡像,基于 Alpine 或 BusyBox 的鏡像非常小。

這是因為 Alpine 鏡像和類似的其他鏡像都經過了優化,其中僅包含最少的必須的軟件包。

在下面的圖片中,你可以看到 Ubuntu、Alpine、Node 和基于 Alpine 的 Node 鏡像之間的大小比較。

49e40650-b392-11ed-bfe3-dac502259ad0.png

通過修改 Dockerfile 并使用 Alpine 作為基礎鏡像,我們的鏡像最終大小為 330MB:

FROMnode:10-alpine
WORKDIR/app
COPYapp/app
RUNnpminstall-gwebserver.local
RUNnpminstall&&npmrunbuild
EXPOSE3000
CMDwebserver.local-d./build

4a188df8-b392-11ed-bfe3-dac502259ad0.png

第二步優化:多階段構建

通過多階段構建,我們可以在 Dockerfile 中使用多個基礎鏡像,并將編譯成品、配置文件等從一個階段復制到另一個階段,這樣我們就可以丟棄不需要的東西。

在本例中,我們部署 React 應用程序需要的是編譯后的代碼,我們不需要源文件,也不需要 node_modules 目錄和 package.json 文件等。

通過將 Dockerfile 修改為如下內容,我們最終得到的鏡像大小為 91.5MB。請記住,來自第一階段(第 1-4 行)的鏡像不會被自動刪除,Docker 將它保存在 cache 中,如果我們在另一個構建鏡像過程中執行了相同的階段,就可以使鏡像構建更快。所以你必須手動刪除第一階段鏡像。

FROMnode:10-alpineASbuild
WORKDIR/app
COPYapp/app
RUNnpminstall&&npmrunbuild
FROMnode:10-alpineWORKDIR/app
RUNnpminstall-gwebserver.local
COPY--from=build/app/build./build
EXPOSE3000
CMDwebserver.local-d./build

4a28ce7a-b392-11ed-bfe3-dac502259ad0.png

現在我們有了一個 Dockerfile,它有兩個階段:在第一個階段中,我們編譯項目,在第二個階段中,我們在 web 服務器上部署應用程序。

然而,Node 容器并不是提供網頁(HTML、CSS 和 JavaScript 文件、圖片等)服務的最佳選擇,最好的選擇是使用像 Nginx 或 Apache 這樣的服務。在本例中,我將使用 Nginx。

通過將 Dockerfile 修改為如下內容,我們的鏡像最終大小是 22.4MB,如果我們運行這個容器,我們可以看到網頁可以正常工作,沒有任何問題。

FROMnode:10-alpineASbuild
WORKDIR/app
COPYapp/app
RUNnpminstall&&npmrunbuild
FROMnginx:stable-alpine
COPY--from=build/app/build/usr/share/nginx/html
EXPOSE80
CMD["nginx","-g","daemonoff;"]

4a3cc7cc-b392-11ed-bfe3-dac502259ad0.png

4a63688c-b392-11ed-bfe3-dac502259ad0.png






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Ubuntu系統
    +關注

    關注

    0

    文章

    91

    瀏覽量

    3963
  • Docker
    +關注

    關注

    0

    文章

    472

    瀏覽量

    11864
  • docker容器
    +關注

    關注

    0

    文章

    30

    瀏覽量

    3326

原文標題:Docker鏡像優化:從1.16GB到22.4MB!

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    汽車輕量化采用3D打印

    輕量化制造簡單而言是在不犧牲零部件性能的前提下,減輕零部件重量的制造方式。重量的減輕帶來能耗的降低,在全球范圍控制碳排放的趨勢下,輕量化制造越來越受到重視,是未來制造的方向之一。除了合金以外,近些年
    發表于 09-27 09:12

    客車車身輕量化分析

    以某車型為例, 分別從優化流程、優化分析模型、分析工況等方面研究車身輕量化方法, 提出一套切實可行的技術路線。關鍵詞: 車身; 結構; 輕量化;
    發表于 07-27 10:09 ?12次下載

    汽車輕量化技術

    節能減排已成為世界汽車行業的共同趨勢。汽車輕量化是在保證強度和安全性的前提下,盡可能降低汽車整備質量,以提高汽車的動力性,實現節能減排。 2017中國(重慶)國際汽車輕量化及材料展,來自全世界頂級
    發表于 05-09 11:57 ?18次下載

    常見的輕量化材料的分類與汽車輕量化材料的應用

    主要有三種手段:輕量化結構設計及優化、先進輕量化材料應用、先進輕量化制造技術應用。采用新型材料是汽車輕量化最直接有效的方法。 汽車的
    發表于 09-15 16:53 ?6次下載
    常見的<b class='flag-5'>輕量化</b>材料的分類與汽車<b class='flag-5'>輕量化</b>材料的應用

    淺析Docker鏡像本地存儲機制及容器啟動原理

    Docker 鏡像不是一個單一的文件,而是有多層構成。我們可通過 docker images 獲取本地的鏡像列表及對應的元信息, 接著可通過dock
    發表于 10-19 14:17 ?2530次閱讀

    瑞德豐如何實現動力電池輕量化

    陸賓林介紹,瑞德豐通過結構設計優化、制造工藝創新、材料輕量化三大維度,在保證安全的大前提下來實現輕量化。
    的頭像 發表于 12-31 09:10 ?3348次閱讀

    Docker—簡介與鏡像用法

    阿里云官方鏡像站: ??https://developer.aliyun.com/mirror/?utm_content=g_1000303593?? ? 一、容器簡介 Docker是管理容器的引擎
    發表于 11-25 16:28 ?520次閱讀
    <b class='flag-5'>Docker</b>—簡介與<b class='flag-5'>鏡像</b>用法

    Docker鏡像的詳細講解

    本文是對 Docker 鏡像的詳細講解,講解了如何安裝 Docker、配置 Docker 鏡像加速以及操作
    的頭像 發表于 08-02 10:00 ?2192次閱讀

    減少docker鏡像大小的方法

    Docker 是一種容器引擎,可以在容器內運行一段代碼。Docker 鏡像是在任何地方運行您的應用程序而無需擔心應用程序依賴性的方式。
    的頭像 發表于 05-15 11:13 ?942次閱讀
    減少<b class='flag-5'>docker</b><b class='flag-5'>鏡像</b>大小的方法

    docker 搜索鏡像,docker查看鏡像詳細信息(docker下載鏡像命令)

    Docker Hub是集中管理的Docker鏡像注冊中心。通過Docker 用戶可以在注冊中心搜索、下載和使用CLI命令行工具中的鏡像。以下
    的頭像 發表于 07-19 09:46 ?1868次閱讀

    最新專利深入“輕量化”!華為這樣做?

    具體來看,汽車輕量化的實現途徑主要有兩方面:一是輕量化材料,使用比強度更高或密度更小的高強度鋼、鋁合金、鎂合金、碳纖維復合材料,對傳統普通鋼結構進行替代;二是輕量化設計,通過開發全新的汽車架構實現
    的頭像 發表于 08-16 14:41 ?711次閱讀
    最新專利深入“<b class='flag-5'>輕量化</b>”!華為這樣做?

    Docker鏡像國內加速的幾種方法

    在國內,拉取 Docker 鏡像速度慢/時不時斷線/無賬號導致限流等,比較痛苦. 這里提供加速/優化的幾種方法。
    的頭像 發表于 10-19 10:02 ?1.1w次閱讀
    <b class='flag-5'>Docker</b><b class='flag-5'>鏡像</b>國內加速的幾種方法

    如何在Windows系統上設置Docker鏡像

    在使用 Docker 進行鏡像下載和構建時,由于眾所周知的原因,國內用戶可能會遇到下載速度慢或者無法連接的問題。為了解決這個問題,我們可以使用國內的鏡像源來加速下載速度。本文將介紹如何
    的頭像 發表于 10-24 16:55 ?5997次閱讀

    構建docker鏡像應該遵循哪些原則

    構建 Docker 鏡像時,應遵循以下原則: 單一職責:每個鏡像應只包含一個應用或服務,避免將多個應用或服務放在同一個鏡像中。這樣可以確保鏡像
    的頭像 發表于 11-23 09:41 ?1047次閱讀

    手動構建Docker鏡像的方法

    不推薦使用docker commit命令,而應該使用更靈活、更強大的dockerfile來構建docker鏡像
    的頭像 發表于 08-05 15:30 ?535次閱讀
    手動構建<b class='flag-5'>Docker</b><b class='flag-5'>鏡像</b>的方法
    主站蜘蛛池模板: 国产成人综合95精品视频免费| 久久久久青草大香线综合精品| 中国老太60old mantv| 国产曰韩无码亚洲视频| 亚洲欧美中文字幕5发布| 狠狠射首页| 2022年国产精品久久久久| 男男h开荤粗肉h文1v1| 伊人成色综合人网| 丰满人妻熟女色情A片| 天天爽夜夜爽8888视频精品| 国产精品久久久久无码AV色戒 | 无限资源在线观看完整版免费下载| 日韩欧美一区二区中文字幕| 正在播放国产尾随丝袜美女| 男人免费网站| 国产成人精品亚洲线观看| 亚洲精品一本之道高清乱码| 榴莲推广APP网站入口官网| 伊人久久精品午夜| 欧美z000z猪| 国产毛片A级久久久不卡精品| 夜色福利院在线观看免费| 国产精品色午夜视频免费看| 一级毛片免费视频网站| 欧美一区二区高清| asian4you裸模| 美女乱草鲍高清照片| 高清国语自产拍在线| 亚洲午夜福利未满十八勿进| 久cao在线香蕉| 一区在线观看在线| 久久超碰国产精品最新| 越南女 黑人 痛苦 大叫| 久久青青草原综合伊人| 俄罗斯6一9泑女网站| 夜色女人香| 手机毛片在线| 麻豆Av国产在线播放| 国产亚洲日韩另类在线播放| 凹凸精品视频分类视频|