Большой размер изображения python в Docker

Я хочу проверить свое приложение с настройки. Итак, у меня есть это в Dockerfile:

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

test.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

почему размер файла такой большой?

это нормальный размер файла?

5 ответов


Я только что проверил на своей машине стандартный ubuntu: trusty image-188 MB, а изображение со всеми материалами python-480MB. Я вижу изображения 800MB довольно часто, обычно это те, которые содержат какое-то значимое приложение.

, эти образы основаны на наших личных фотографий официальный Docker-образ библиотеки, кажется, гораздо больше, по некоторым причинам. Они осознают этот факт и пытаются его уменьшить. Посмотрите на дискуссию по этому вопросу здесь

Если вам нужно немного меньше изображение попробуйте этот 'rouge8 / pythons' это около 100 МБ меньше.

rouge8/pythons latest … 680.3 MB

имейте в виду, изображения docker расположены как иерархическая структура слоя. Таким образом, при повторном использовании одного и того же базового образа для многих контейнеров размер каждого отдельного контейнера довольно мал. Это будет только разница между базой плюс все, что вы добавили в конкретный контейнер.


Alpine Linux очень постный дистрибутив доступный для Докера. Без Python это около 5 Мб. С Python я получаю изображения между 60 и 120 МБ. Следующий файл Dockerfile дает изображение 110 МБ.

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"]

кроме того, он очень ухоженный.


вы можете попробовать python: {version} - alpine version. Это много меньше:

>> 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

на момент написания это выглядит как официальное изображение supoprts -alpine на всех версиях python.

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


они добавляют различные системные пакеты для таких вещей, как клиенты баз данных, обработка файлов изображений и библиотеки синтаксического анализа XML. Это так, что нет никакой дополнительной работы, которую пользователь должен сделать, если они хотят установить пакеты Python для psycopg2, MySQLdb, Pillow или lxml. Добавление этих дополнительных пакетов означает, что изображение будет толще, что, если бы вам не нужны были эти пакеты, было бы пустой тратой места.

они также не пытаются обрезать материал из установки Python, который не является действительно требуется, например, все стандартные каталоги тестового кода библиотеки. Даже .файлы pyc можно обрезать, чтобы сэкономить место без какого-либо реального воздействия, поскольку веб-приложение обычно загружается один раз в течение срока службы контейнера .pyc файлы на самом деле не приносит вам много пользы.

в качестве сравнения взгляните на ' pythonX.Y-slim' варианты и размер тех. Нет, хотя вариант onbuild для тонких изображений.

вы также можете посмотреть на мой собственный Докер изображения для Python с поддержкой Apache/mod_wsgi в комплекте. Они обрезаются и полагаются на дополнительные пакеты, устанавливаемые Пользователем в качестве крючков сборки только при необходимости. Для тех, размер изображения Python 3.4 onbuild специально для приложения WSGI является:

grahamdumpleton/mod-wsgi-docker python-3.4-onbuild ... 409.9 MB

размер, указанный даже включает Apache и mod_wsgi, что дает вам надлежащий производственный сервер WSGI с возможностями для обработки статического содержимого файла и многое другое.

если не выполняется WSGI приложение, вместо этого начните с базового изображения.

вы можете найти изображения mod_wsgi docker по адресу:

различные сообщения в блоге о том, как использовать эти изображения для приложений WSGI и построения изображений Docker для приложений Python и WSGI можно найти, связанные с описанием изображения на Docker hub. Также следите за моим блог-сайтом в целом, как я будет публиковать больше о Docker и Python с течением времени.


Да, это нормальный размер. Образ содержит образ операционной системы и различные пакеты, и именно поэтому размер.