D中的大尺寸python图像

2024-04-26 11:03:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用Docker来测试我的应用程序。所以,我在文档文件中有这个:

FROM python:3-onbuild
CMD [ "python", "./test.py" ]

测试.py:

print(123)

然后我跑:

docker build -t my_test_app .

所以,我有一个大形象。docker images返回:

REPOSITORY          TAG                 IMAGE ID        CREATED    VIRTUAL SIZE
python              3-onbuild           b258eb0a5195    8 days ago 757 MB

为什么文件这么大?

文件大小正常吗?


Tags: dockerfrompytestbuildcmdapp应用程序
3条回答

您可以尝试python:{version}-alpine版本。它要小得多:

>> docker image ls |grep python
python    3.6-alpine     89.4 MB
python    3.6            689 MB
python    3.5            689 MB
python    3.5.2          687 MB
python    3.4            833 MB
python    2.7            676 MB

在编写本文时,官方图像似乎支持所有python版本上的-alpine

https://hub.docker.com/_/python/

Alpine Linux是Docker可用的非常精简的发行版。如果没有Python,大约有5MB。使用Python,我可以获得60到120mb之间的图像。下面的Dockerfile生成一个110 MB的图像。

FROM alpine:3.4

RUN apk --update add \
      build-base python-dev \
      ca-certificates python \
      ttf-droid \
      py-pip \
      py-jinja2 \
      py-twisted \
      py-dateutil \
      py-tz \
      py-requests \
      py-pillow \
      py-rrd && \
    pip install --upgrade arrow \
                          pymongo \
                          websocket-client \
                          XlsxWriter && \
    apk del build-base python-dev && \
    rm -rf /var/cache/apk/* && \
    adduser -D -u 1001 noroot

USER noroot

CMD ["/bin/sh"]

而且,它被很好地保护着。

我刚刚在我的机器上检查了标准的ubuntu:trusty映像是188mb,包含所有python内容的映像是480MB。我经常看到800MB的图像,这些图像通常包含一些有意义的应用程序。

然而,这些图片是基于我们的私人图片官方码头图书馆的图片似乎更大的原因。他们意识到这一事实,并试图减少它。看看关于这个主题的讨论here

如果你需要一个小一点的图像,试试这一个'胭脂8/Python'它是约100兆小。

rouge8/pythons latest … 680.3 MB

请记住,docker图像是按分层结构排列的。因此,如果对许多容器重复使用相同的基础映像,则每个容器添加的大小相当小。它只是基础加上你添加到特定容器中的任何东西之间的差异。

相关问题 更多 >