Docker的`COPY --chmod`可將映象檔案大小減少35%
本週早些時候,我正在編寫一個 Dockerfile 來下載和執行二進位制檔案,這時我注意到映象影像大小遠遠超出了我的預期:
FROM ubuntu:21.10 AS downloader # Install wget, gnupg; download a zip archive; verify checksum; unzip the binary FROM ubuntu:21.10 LABEL ... <p class="indent">[b]COPY --from[/b]=downloader /bin/<binary> /bin/<binary> RUN apt-get update && apt-get install -y openssl dumb-init iproute2 ca-certificates \ && rm -rf /var/lib/apt/lists/* \ && chmod +x /bin/<binary> && mkdir -p <couple of empty directories> \ && ... ... |
`COPY --chmod`在 BuildKit中可用。
解釋:如果你把檔案複製到一個容器中,那麼這些檔案就有自己的 "層",類似於它們自己的壓縮檔案。
然後,如果你對所有這些檔案進行`COPY --chmod`,它們將被複制到第二層,並帶有新的訪問修飾符。
當容器執行時解壓映象時,它將把這兩層視為獨立的壓縮檔案,並解壓第一層,然後再解壓第二層,完全覆蓋第一層。
做到這兩點,即在同一層中進行復制和chmod,映象檔案的大小減少了50%,或者在更現實的情況下減少了一點。
這是更明顯的改進之一,儘管由於某些原因很少使用。
但是,docker-slim是建立最小且安全的 Docker 映像的方法:
不要浪費時間來嘗試使用 Alpine 基礎映象和靜態編譯複雜的軟體。當 docker-slim 在從映象中刪除作業系統方面做得更好,同時讓您可以使用任何您想要的基礎映象時,這帶來的所有效能、相容性、包可用性問題都不值得。
其他提升辦法:按照底部的“變化最大”的順序放置您的步驟。所以:在頂部載入庫,在底部複製程式碼本身。
層在 Dockerfile 中按從上到下的順序進行處理。
如果其中一個發生了變化,那麼所有後續層也將被重建。
因此,永遠不會改變的東西,比如 LABEL 宣告,應該放在第一位,而經常改變的東西,比如你的程式碼,應該放在最後。
相關文章
- 10 個最佳化技巧,減少 Docker 映象大小【轉】Docker
- 如何在Mac上減少PDF檔案大小Mac
- Docker將映象檔案釋出到阿里雲Docker阿里
- Docker將映象檔案釋出到私服庫Docker
- 減少Android APK的大小99.99%AndroidAPK
- 日本研究稱中國10年間將碳排放減少35%
- Python 壓縮PDF減小檔案大小Python
- 【譯】如何使用webpack減少vuejs打包的大小WebVueJS
- python 將檔案大小轉換為human readable 的大小表示Python
- MySQL 減少InnoDB系統表空間的大小MySql
- pdf檔案太大如何變小 減小pdf檔案大小最簡單的方法
- [譯] 怎樣減少 Android 應用包 60% 的大小?Android
- docker 怎麼下載指定版本的映象檔案Docker
- Docker配置檔案配置映象加速器Docker
- docker映象構建libreoffice轉換檔案Docker
- 檔案許可權管理命令chmod,chown與文字搜尋命令grep
- Docker檔案遷移到TF卡或者隨身碟,最大限度減少空間佔用Docker
- 最佳化 ASP.NET Core Docker 映象的大小ASP.NETDocker
- 【Azure Developer】已釋出好的.NET Core專案檔案如何打包為Docker映象檔案DeveloperDocker
- 使用 Docker 部署 Node 應用 - 映象檔案尺寸的優化Docker優化
- 分享一個檢視xhprof資料檔案的docker映象Docker
- linux為檔案/目錄分配使用者組/許可權(chown chgrp chmod)Linux
- 【Docker】Windows將docker下載的映象存放到其他盤DockerWindows
- 主機偵探:Centos7系統使用chmod修改檔案許可權方法CentOS
- 縮減Docker映象體積歷程總結Docker
- docker容器 如何精簡映象減小體積Docker
- hadoop透過CombineFileInputFormat實現小檔案合併減少map的個數HadoopORM
- 檔案許可權中 chmod、u+x、u、r、w、x分別代表什麼
- 限制檔案大小及顯示檔案大小(正規表示式
- hadoop archive合併小檔案並進行mapreduce來減少map的數量HadoopHive
- 如何將docker 映象上傳到docker hub倉庫Docker
- 編碼的進階,檔案操作,深淺copy
- Effective Objective-C 2.0讀書筆記(一)-如何減少標頭檔案的引入Object筆記
- 將本地安裝的Python庫整合到Docker映象PythonDocker
- 『現學現忘』Docker基礎 — 35、實戰:自定義CentOS映象DockerCentOS
- SQLite重設計:尾部延遲可減少 100 倍SQLite
- 生成固定大小的隨機檔案隨機
- JavaScript限制上傳檔案的大小JavaScript