![](https://habrastorage.org/web/97f/fa0/89c/97ffa089ce9d4ddaa7c07b4321ee05c9.jpg)
Американская компания 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:
![](https://habrastorage.org/web/3fa/e00/e62/3fae00e6223c48d685d51fafb20fc200.png)
Как изменялись предпочтения по базовым дистрибутивам на протяжении последнего года?
![](https://habrastorage.org/web/897/934/16b/89793416bdfe454788facdb7baa9a9a9.png)
Из более-менее стабильных тенденций можно отметить разве что постепенный рост Alpine (за счёт небольшого снижения популярности Debian), однако прогнозировать что-либо на основе этих данных ещё рано.
Какие версии Debian предпочтительны? Всё закономерно: с выходом 9 «Stretch» (в июне) этот релиз начал «отбирать» долю у прошлого релиза — 8 «Jessie».
![](https://habrastorage.org/web/b2f/691/773/b2f691773454431295cfef9e9f78a68f.png)
Публичные образы
Официальные репозитории — пусть, возможно, и самые популярные, но в количественном отношении это лишь небольшая часть от всего, что можно найти на Docker Hub. Поэтому образы от сообщества (public) тоже были проанализированы в Anchore, и результаты получились несколько иными.
Самый популярный дистрибутив — это…
![](https://habrastorage.org/web/a7d/444/98c/a7d44498c6784b95930b835e554073cb.png)
… да, снова Debian. Однако разница с Alpine уже минимальна. А если рассматривать временную перспективу, то лидерство не было вечным: в своё время Debian уступал и Ubuntu (декабрь'16—январь'17), и Alpine (июнь'17).
![](https://habrastorage.org/web/d25/42b/2a3/d2542b2a3d2147abb08f0751357330b7.png)
В целом же есть схожая тенденция: в последнее время популярность Debian немного снижается, а у Alpine — растёт. Третий дистрибутив — Ubuntu — достиг своего минимума в июне, но снова пошёл вверх. Появившийся в рейтинге дистрибутивов Raspbian свидетельствует об интересе сообщества к Docker-образам на соответствующих устройствах.
Размер образов
Выбор базовой операционной системы для контейнеров для многих обусловлен размером конечного образа: действительно, зачем (при прочих равных) тащить в образ файлы, которые точно не будут в нём использоваться? Поэтому в своё исследование специалисты из Anchore включили и этот критерий.
Вряд ли кто-то удивится, что образ базовой ОС минимален у BusyBox и Alpine. Из дистрибутивов «общего назначения» среднюю позицию занимают Debian/Ubuntu и openSUSE (около 110—120 Мб), а самыми «толстыми» оказались Oracle Linux и Fedora (более 200 Мб).
![](https://habrastorage.org/web/6b2/382/dce/6b2382dce3c542278fc7c63f0b49861c.png)
Какими получаются по размеру итоговые образы на базе различных систем? Довольно очевидно: «в среднем по больнице» самые маленькие образы — на базе BusyBox и Alpine, а самые большие — с CentOS, Ubuntu и Debian. По очевидным причинам, отличный показатель демонстрирует Raspbian. При этом официальные образы, как правило, в среднем значительно меньше, чем образы от сообщества. Но интересно, что «белой вороной» тут оказался Alpine, образы от сообщества на базе которого в среднем меньше официальных.
![](https://habrastorage.org/web/9da/2de/19b/9da2de19b31e4e7ba79b173bea472f6f.png)
P.S.
Напоследок, статистика немного другого рода от прошлого года — о росте числа pull'ов в Docker Hub на фоне этапов развития Docker (найти более новую, к сожалению, не представляется возможным):
![](https://habrastorage.org/web/c84/577/a9a/c84577a9a9c84244adf8f6a0ee26dcae.jpg)
Мы в качестве базовой системы для своих образов используем Ubuntu, а вы?
P.P.S. Читайте также в нашем блоге:
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Какую систему вы предпочитаете в качестве базовой для контейнеров?
33.33% Alpine98
0.68% BusyBox2
14.63% CentOS43
17.01% Debian50
30.27% Ubuntu89
4.08% Другую12
Проголосовали 294 пользователя. Воздержались 95 пользователей.