Không cài đặt các package hỗ trợ debug như là nano, vim, telnet, curl. Các lập trình viên có thể cài đặt on-demand khi họ cần
III. Tối ưu hoá từng layer
Thay vì sử dụng command trên từng layer, ta có thể gộp chung nhờ sự hỗ trợ của toán tử && của Linux. Thay vì
RUN apt-get updateRUN apt-get install -y nodejs
Có thể dùng
RUN apt-get update && apt-get install -y nodejs
IV. Không sử dụng cache trong lúc cài đặt các package
Repo cache có thể giúp tiết kiệm thời gian/bandwidth khi cài đặt lại các package, tuy nhiên quá trình này sẽ gây tăng dung lượng của Docker Image.
Ta có thể bỏ qua cache bằng cách
Với Ubuntu
RUN apt-get install -- no-install-recommends
Với Alpine
RUN apk add --no-cache
V. Xoá các repo sau khi hoàn thành quá trình cài đặt
Với Ubuntu
RUN rm -rf /var/lib/apt/lists/*
Với CentOS hoặc Redhat
RUN yum clean all
VI. Docker Image base theo mục đích sử dụng
VD ta có thể tách môi trường run-time & môi trường build
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base...FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build...FROM build AS publishRUN dotnet publish "ZDN.Web.Api.csproj" -c Release -o /app/publishFROM base AS finalWORKDIR /appCOPY --from=publish /app/publish .ENV ASPNETCORE_ENVIRONMENT=InternalENTRYPOINT ["dotnet", "ZDN.Web.Api.dll"]