在Docker中的大尺寸的python图像

tim*_*tim 11 python docker

我想用Docker测试我的应用程序.所以,我在Dockerfile中有这个:

FROM python:3-onbuild
CMD [ "python", "./test.py" ]
Run Code Online (Sandbox Code Playgroud)

test.py:

print(123)
Run Code Online (Sandbox Code Playgroud)

然后我跑:

docker build -t my_test_app .
Run Code Online (Sandbox Code Playgroud)

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

REPOSITORY          TAG                 IMAGE ID        CREATED    VIRTUAL SIZE
python              3-onbuild           b258eb0a5195    8 days ago 757 MB
Run Code Online (Sandbox Code Playgroud)

为什么文件大小如此之大?

该文件大小是否正常?

Vla*_*lad 7

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

然而,这些镜像基于我们的私有镜像,官方 Docker 库镜像由于某种原因看起来要大得多。他们意识到这一事实并正在努力减少它。看看关于这个主题的讨论here

如果您需要更小的图像,请尝试使用这个“rouge8/pythons”,它大约小 100MB。

rouge8/pythons latest … 680.3 MB
Run Code Online (Sandbox Code Playgroud)

请记住,docker 图像被安排为分层的层结构。因此,如果您为许多容器重用相同的底层基础映像,则每个单独的容器添加的大小都非常小。它只是基础加上您添加到特定容器中的任何内容之间的差异。


Dan*_*l F 6

对于Docker,Alpine Linux是一个非常精简的发行版。如果没有Python,则约为5MB。使用Python,我得到的图像在60到120 MB之间。以下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"]
Run Code Online (Sandbox Code Playgroud)

而且,它的维护非常好。


toa*_*oza 5

您可以尝试使用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
Run Code Online (Sandbox Code Playgroud)

在撰写本文时,官方图像似乎-alpine在所有python版本上均受支持。

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