在这里以Python 举例
直接上对比
原始
******* latest 01360a9dec8f About an hour ago 1.05GB
改进后
****** latest 9e3b99fe9812 13 seconds ago 172MB
第一步 选用 正确的镜像
下面是部分官方镜像截图(截取自dockerhub)
可以看到 不同的tag 有的相差一二百MB 有些基于windows的镜像甚至高达5.4GB之巨! 所以 选用正确的镜像很重要. 这里建议使用基于alpine的Python Runtime镜像. 但是alpine 过于精简,少了很多基础软件 例如 gcc , 当安装某些需要编译的Python 包的时候就需要它.
image.png
第二步 如何正确的在构建镜像时 pip install
这里用到一些 Dockerfile 中的 Stage 概念. 和pip install 把包都安装到了哪里.
FROM docker pull python:3.8.3-alpine3.11 as Base
RUN apk --no-cache add curl
RUN curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.5.2.2-1_amd64.apk && \
apk add --allow-untrusted msodbcsql17_17.5.2.2-1_amd64.apk
FROM Base as Build
WORKDIR /src
RUN apk --no-cache add build-bas