docker服务镜像瘦身方法

本文详细介绍了如何对docker服务镜像进行瘦身,包括修改Dockerfile、选择合适的镜像基础、避免不必要的安装、优化docker layer、删除残留文件以及使用.dockerignore文件。通过一系列优化,将镜像大小从1.16GB降至369MB。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker服务镜像瘦身方法

为什么要瘦身

  • 空间:镜像占满硬盘
  • 时间:拉取镜像缓慢

修改前后的dockerfile

先上修改后的dockerfile

FROM python:3.8-slim

COPY /.build/ /app/

# 安装python库
RUN echo "==> Install curl and helper tools..."  && \
    apt-get update && \
    apt-get install -y python3-pip curl && \
    pip3 install --no-cache-dir -r /app/requirements.txt -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com && \
    echo "==> Clean up..."  && \
    apt-get clean  && \
    rm -rf /var/lib/apt/lists/*  && \
    cd /root && tar zxvf nltk_data.tar.gz && rm nltk_data.tar.gz && \
    apt-get remove --auto-remove -y python3-pip
    
# 复制脚本
COPY /deploy/ /app/deploy/
COPY /src/ /app/src/

# 编译py脚本至pyc,并删除py脚本
RUN  python3 -m compileall -b /app/ && \
    find /app/ -name '*.py' -delete

# 环境变量
ENV TZ Asia/Shanghai
ENV HEALTHCHECK_PORT 12371

# 健康检查
HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=10s \
    CMD sh /app/deploy/healthcheck.sh

# 运行
CMD ["python3", "app/deploy/main.pyc"]

再上修改前的dockerfile

FROM python:3.8

COPY /.build/ /app/
# Install any needed packages specified in requirements.txt
RUN pip install --upgrade pip -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
RUN pip install -r app/requirements.txt -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

# Copy the current directory contents into the container at /app
COPY /deploy/ /app/deploy/
COPY /src/ /app/src/

# download nltk model
RUN pip install nltk==3.5
RUN cd /root && tar zxvf nltk_data.tar.gz

# Define environment variable
ENV TZ Asia/Shanghai

# Run app.py when the container launche
CMD ["python", "app/deploy/main.py"]

镜像打包下来,一个是369MB,一个是1.16GB,差了3倍。

压缩研究过程

  • 镜像base的选择
  • pip不必要的安装
  • docker系统不必要的安装
  • 不必要依赖的卸载
  • docker layer 优化
  • 残留文件的删除
  • .dockerignore

镜像base的选择

资源
常见base
  • python
  • centos
  • aliphe
  • debian
  • ubuntu

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值