【问题标题】:Decrease Docker Image Size减小 Docker 映像大小
【发布时间】:2020-12-27 02:05:38
【问题描述】:

所以我正在尝试使用 docker-compose 将多容器服务(web、worker、redis)部署到 ECS。该服务有一个机器学习模型,它需要 Tensorflow 和 Keras 作为依赖项。运行 pip install -r requirements.txt 后,镜像大小增加到 2gb 以上,其中 1.75gb 是依赖项。有没有办法减小这个图像大小?既然在云端部署这么大的镜像有很多弊端?

用于网络的 Dockerfile:

FROM python:3.6
WORKDIR .
COPY . .
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 5000
CMD ["python", "views.py"]
requirements.txt:
Flask==1.1.2
numpy==1.18.5
opencv-python==4.2.0.34
Pillow==7.1.2
redis==3.5.3
rq==1.4.3
boto3
pymongo
Keras==2.2.4
tensorflow==1.15.0
matplotlib

【问题讨论】:

    标签: python docker docker-compose amazon-ecs


    【解决方案1】:

    鉴于您的依赖项导致 1.75GB 的增加,您应该从那里开始。没有简单的银弹。这些是第一步:

    1. 查看各个依赖项增加了多少映像。从最大的罪犯开始。
    2. 查看依赖项是否允许不同的安装变体。也许有一个版本不需要完整的库。
    3. 看看是否可以手动删除部分依赖。如果您在pip install --no-cache-dir -r requirements.txt && rm -rf somepath 之后立即删除,则 docker 映像将不会增长。
    4. 接下来您可以搜索更优化的基础映像。你可以试试python:3.6-slim

    【讨论】:

    • 最大的依赖是 Tensorflow,但我需要它,因为我的项目是围绕它构建的。它占用了 1.75gbs 的大部分,那么有没有办法解决它?例如,使用 python 3.6 作为我的环境,而不是用 FROM tensorflow 替换 thet ....?
    • 鉴于 tensorflow 基础镜像小于 600MB,这可能是另一个值得尝试的路径。这将相当于 2. 和 3。另一种选择是重新构建一个更苗条的基础镜像 - 但这将需要相当多的工作和噩梦来维护。
    猜你喜欢
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 2016-06-14
    • 2020-11-15
    相关资源
    最近更新 更多