Американская компания Anchore, созданная основателем Ansible Inc., с помощью своего сервиса Anchore Navigator, предназначенного для исследования контейнерных образов, проанализировала Docker Hub и ответила на следующие вопросы:
- Какие операционные системы используются больше всего?
- Как выбор ОС менялся на протяжении времени?
- Отличаются ли паттерны их использования для официальных и публичных образов?
Технические детали
Основой для упомянутого сервиса Anchore Navigator является набор Python-утилит, которые распространяются под свободной лицензией (Apache License 2.0) на GitHub. Просмотр исходников помогает выяснить, как технически собирается информация об образах. Например, определение Linux-дистрибутива осуществляется тривиальным запуском
lsb_release
.Стоит также уточнить, что, поскольку в разных репозиториях образов следуют разным циклам релизов, в рамках этого исследования авторы учитывали только операционную систему из последнего протегированного релиза. Для некоторых образов (в качестве примера приводится
library/swarm:latest
) определить ОС не представлялось возможным, т.к. «подобные образы часто являются статически собранными бинарниками и не требуют ничего сверх этого для запуска».Наконец, на данный момент анализировались только образы Docker Hub, но в дальнейшем планируется добавить статистику и по Amazon EC2 Container Registry (Amazon ECR).
Используемые ОС
Официальные образы
Явным фаворитом среди дистрибутивов, используемых в качестве базовых операционных систем для официальных образов, является Debian, а с большим отставанием от него идут Alpine и Ubuntu:
Как изменялись предпочтения по базовым дистрибутивам на протяжении последнего года?
Из более-менее стабильных тенденций можно отметить разве что постепенный рост Alpine (за счёт небольшого снижения популярности Debian), однако прогнозировать что-либо на основе этих данных ещё рано.
Какие версии Debian предпочтительны? Всё закономерно: с выходом 9 «Stretch» (в июне) этот релиз начал «отбирать» долю у прошлого релиза — 8 «Jessie».
Публичные образы
Официальные репозитории — пусть, возможно, и самые популярные, но в количественном отношении это лишь небольшая часть от всего, что можно найти на Docker Hub. Поэтому образы от сообщества (public) тоже были проанализированы в Anchore, и результаты получились несколько иными.
Самый популярный дистрибутив — это…
… да, снова Debian. Однако разница с Alpine уже минимальна. А если рассматривать временную перспективу, то лидерство не было вечным: в своё время Debian уступал и Ubuntu (декабрь'16—январь'17), и Alpine (июнь'17).
В целом же есть схожая тенденция: в последнее время популярность Debian немного снижается, а у Alpine — растёт. Третий дистрибутив — Ubuntu — достиг своего минимума в июне, но снова пошёл вверх. Появившийся в рейтинге дистрибутивов Raspbian свидетельствует об интересе сообщества к Docker-образам на соответствующих устройствах.
Размер образов
Выбор базовой операционной системы для контейнеров для многих обусловлен размером конечного образа: действительно, зачем (при прочих равных) тащить в образ файлы, которые точно не будут в нём использоваться? Поэтому в своё исследование специалисты из Anchore включили и этот критерий.
Вряд ли кто-то удивится, что образ базовой ОС минимален у BusyBox и Alpine. Из дистрибутивов «общего назначения» среднюю позицию занимают Debian/Ubuntu и openSUSE (около 110—120 Мб), а самыми «толстыми» оказались Oracle Linux и Fedora (более 200 Мб).
Какими получаются по размеру итоговые образы на базе различных систем? Довольно очевидно: «в среднем по больнице» самые маленькие образы — на базе BusyBox и Alpine, а самые большие — с CentOS, Ubuntu и Debian. По очевидным причинам, отличный показатель демонстрирует Raspbian. При этом официальные образы, как правило, в среднем значительно меньше, чем образы от сообщества. Но интересно, что «белой вороной» тут оказался Alpine, образы от сообщества на базе которого в среднем меньше официальных.
P.S.
Напоследок, статистика немного другого рода от прошлого года — о росте числа pull'ов в Docker Hub на фоне этапов развития Docker (найти более новую, к сожалению, не представляется возможным):
Мы в качестве базовой системы для своих образов используем Ubuntu, а вы?
P.P.S. Читайте также в нашем блоге:
Комментарии (3)
dmOx
10.09.2017 14:49Только я вижу странное увеличение образа на основе CentOS в 20-30 МБ от базового после сборки, а Debian или Ubuntu на 300 МБ?
Видимо образов собранных на основе CentOS на столько мало, что статистка не показательна.
diafour
Вот как раз сегодня нашёл картиночку про варианты базовых образов ubuntu в этом репозитории: https://hub.docker.com/r/blitznote/debootstrap-amd64/