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阿里
- 減小Delphi的Exe檔案大小
- 減少apk包大小的一種思路APK
- LVM管理之減少LV的大小LVM
- 減少Android APK的大小99.99%AndroidAPK
- 怎樣壓縮Docker映象的大小Docker
- 將ASM裡面的檔案copy到檔案系統ASM
- 減小Delphi xe系列生成的exe檔案大小
- 減小VirtualBox虛擬硬碟檔案的大小硬碟
- 【譯】如何使用webpack減少vuejs打包的大小WebVueJS
- MySQL 減少InnoDB系統表空間的大小MySql
- Python 壓縮PDF減小檔案大小Python
- 不用刪文字,減小Word檔案的大小方法
- Docker配置檔案配置映象加速器Docker
- 如何編寫 Dockerfile 檔案建立 Docker 映象Docker
- [譯] 怎樣減少 Android 應用包 60% 的大小?Android
- docker 怎麼下載指定版本的映象檔案Docker
- Docker檔案遷移到TF卡或者隨身碟,最大限度減少空間佔用Docker
- [譯] 我是如何做到在 5 分鐘之內將應用大小減少 60% 的
- pdf檔案太大如何變小 減小pdf檔案大小最簡單的方法
- 大檔案Copy
- 如何通過 WebP 相容減少圖片資源大小Web
- 最佳化 ASP.NET Core Docker 映象的大小ASP.NETDocker
- 檔案許可權管理命令chmod,chown與文字搜尋命令grep
- python 將檔案大小轉換為human readable 的大小表示Python
- docker容器 如何精簡映象減小體積Docker
- 縮減Docker映象體積歷程總結Docker
- 【Azure Developer】已釋出好的.NET Core專案檔案如何打包為Docker映象檔案DeveloperDocker
- 使用 Docker 部署 Node 應用 - 映象檔案尺寸的優化Docker優化
- 分享一個檢視xhprof資料檔案的docker映象Docker
- docker映象構建libreoffice轉換檔案Docker
- 【Docker】Windows將docker下載的映象存放到其他盤DockerWindows
- copy檔案到其他的路徑
- 詳細記錄 mac 系統下使用 chmod 命令修改檔案許可權Mac
- Linux chmod命令修改檔案與資料夾許可權命令程式碼Linux