Skip to content
Back

Kỹ thuật tối ưu hoá Docker Image

Tối ưu hóa Docker Image
Kỹ thuật tối ưu hóa Docker Image

I. Sử dụng Docker Image base có size nhỏ

Bạn có thể sử dụng alpine OS để có size nhỏ

FROM alpine

II. Chỉ cài đặt các package cần thiết để sử dụng

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 update
RUN 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 publish
RUN dotnet publish "ZDN.Web.Api.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENV ASPNETCORE_ENVIRONMENT=Internal
ENTRYPOINT ["dotnet", "ZDN.Web.Api.dll"]

Tags:

Không tìm thấy bài viết nào.