Перейти к содержанию

Docker: решения для хранения образов

Сегодня ни одно решение, основанное на Docker или просто использующее его, не обходится без использования хранилища Docker-образов (images). Существуют два типа таких хранилищ: публично доступные и приватные.

Вот некоторые примеры публично доступных хранилищ Docker-образов:

Quay.io

Quay.io — это хранилище образов Docker, предоставляемое Red Hat. Оно поддерживает как публичные, так и приватные репозитории и предлагает различные инструменты для управления и автоматизации развертывания контейнеров. Quay.io продвигает себя как имеющие «продвинутые триггеры для сборки», «расширенные возможности по управлению привилегиями для команды» и «безопасное хранилище». В настоящий момент из публично доступных решений Quay является наиболее дружественным для использования Enterprise компаниями.

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

Quay предоставляется как публичное решение или же как частная инсталляция. Публичное решение предлагает неограниченное количество бесплатных публичных репозиториев, за приватные репозитории вашей организации придется заплатить.

Docker Hub

Docker Hub является собственным предложением компании Docker. Как и у Quay он предлагает неограниченное количество бесплатных публичных репозиториев и не взимает плату за хранение или пропускную способность. Если вам нужны частные репозитории, они оплачиваются на основе нужного вам количества и количества параллельных сборок. Docker Hub не предлагает возможности гранулярного управления полномочиями, как это сделано у Quay, что может быть проблемой для большего количества Enterprise компаний. Docker Hub также имеет более ограниченную интеграцию git, требуя, чтобы ваш код жил на GitHub или Bitbucket, если вы хотите воспользоваться автоматизированной сборкой. Стоит отметить, что Docker Hub — это основной реестр используемый вами, когда вы выполняете команду docker push или docker pull.

Внедряем и поддерживаем Kubernetes/DevOps Развертываем и сопровождаем инфраструктуру для бизнес-приложений на базе микросервисов и контейнеров Узнать больше

AWS EC2 Container Registry (ECR)

AWS EC2 Container Registry (ECR) — это управляемый сервис AWS, предназначенный для хранения, управления и распространения образов Docker. Вы можете создавать публичные репозитории и делиться образами Docker с другими пользователями. Использовать его имеет смысл только в том случае, если вы уже используете или собираетесь использовать какие-либо другие сервисы от Amazon AWS, например, Elastic Container Service. ECR может быть использован как любое другое хранилище образов Docker, но максимальную пользу из него можно извлечь только используя его совместно с другими продуктами Amazon AWS. Как и большинство других сервисов от AWS, ECR также позволяет очень гибко регулировать уровень доступа и привилегии.

Одна из наиболее важных особенностей ECR в том, что его ценовая политика сильно отличается от Quay и Docker Hub. Вместо того, чтобы брать оплату за количество приватных репозиториев, это решение оплачивается строго по объему занятого стораджа и уровня утилизации сети.

Google Container Registry

Google Container Registry — этот репозиторий очень похож на Amazon ECR, только он тесно интегрирован в инфраструктуру облачных сервисов Google. Точно так же его имеет смысл использовать только если часть вашей инфраструктуры будет использовать облачные услуги Google, например, Kubernates.

Ценообразование также похоже на ECR, т.е. вы платите только за объемы хранимых Docker образов и исходящий сетевой трафик. У данного решения как и у всего облака Google приоритет прежде всего на безопасность, поэтому все пока что не очень удобно, зато очень и очень безопасно. Если вам нужна возможность автоматизировать ваши процессы разработки, тестирования и релизов, скорее всего вам пока не сюда.

Решения для организации частных приватных репозиториев

Docker Registry 2.0

Docker Registry 2.0 — Открытая версия репозитория, который использует Docker для организации своего Docker Hub. Документация на него более, чем исчерпывающая. Возможно все, но это «все» надо настраивать: отказоустойчивость, аутентификацию из правильного источника и само собой управление пользователями. Никакого Web-интерфейса из коробки. Выбирать это решение стоит только если вы готовы потратить какое-то значительное количество времени на «допиливание» этого решения. В противном случае, у Docker можно купить цельное решение для построения контейнерной инфраструктуры Docker Datacenter.

Atomic Registry (RedHat)

Atomic Registry (RedHat) – Открытая версия репозитория от RedHat, выполненная на базе одного из проектов OpenShift. Распространяется в виде образов виртуальных серверов, которые можно скачать и запустить в любом Облаке, среде виртуализации или физическом железе. Разработчики хвалят это решение за то, что оно изначально спроектировано для кластеризации и отказоустойчивой работы, красивый Web-интерфейс, а также поддержку SSO и RBAC, что позволяет встроить этот репозиторий в собственную инфраструктуру. Документация достаточная, но далеко не исчерпывающая. Запустив ВМ из образа с этим решением, очень легко понять насколько оно будет вам полезно. На основной странице проекта есть 2 видео, показывающие как поставить и как начать использовать это решение.

Harbor (VMware)

Harbor (VMware) — еще один открытый репозиторий, сделавший ставку на Enterprise компании, реализовав RBAC, репликацию образов между узлами кластера для лучшей балансировки нагрузки, поддержку ADLDAP, аудитный журнал операций, красивый Web-интерфейс, переведенный на несколько языков, включая русский, REST API и удобный механизм развертывания (виртуальная машина для vSphere в формате OVA).

Portus (Suse)

Portus (Suse) — Открытая версия репозитория от Suse. Чуть менее выдающийся Web-интерфейс, чем у предшественников, все те же реализованные RBAC, интеграция с LDAP, аудит операций, тегирование репозиториев, возможность включить пользователям возможность самостоятельной регистрации с последующей модерацией. Это решение очень простое и понятное.

Sonatype Nexus Repository Manager 3.0 OSS

Sonatype Nexus Repository Manager 3.0 OSS — Еще один интересный репозиторий, который я добавляю в этот список уже после того, как статья была опубликована. Это решение позволяет создавать не только репозитории для хранения образов Docker, но в добавок поддерживает и позволяет вам создавать репозитории bower, maven2, npm, nuget, pipi и rubygems. Помимо всего прочего это решение может быть интегрировано с LDAP, позволяет очень гибко разграничивать права доступа пользователей к различным репозиториям, а всю настройку можно легко выполнить в удобном Web-интерфе. Решение абсолютно бесплатное.

Quay.io Enterprise

Quay.io Enterprise — Частная инсталляция Quay для установки на площадке и оборудовании конечного заказчика характеризуется возможностью настройки отказоустойчивого режима работы всех компонентов, входящих в состав решения, возможностью организации гео-репликациии образов Docker между датацентрами, возможностью строить процесс непрерывной интеграции, возможностью подключать сканер безопасности образов, например, Clair, упоминавшийся в статье Docker: проверка контейнеров на безопасность, а также возможность использования LDAP в качестве сторонней базы учетных записей пользователей. Полный список возможностей можно посмотреть тут.

Artifactory

Artifactory — Наверное, самое странное и дорогое решение для хранения образов Docker. Не смотря на то, что это решение можно использовать как SaaS, большинство известных мне компаний успешно используют этот продукт все же в виде отдельной частной инсталляции. Вообще говоря, изначальное назначение этого программного продукта было далеко не хранение образов Docker, однако, с какого-то момента «теперь ваш бинарный репозиторий для хранения артефактов разработки еще и Docker образы хранить умеет».

Это лишь несколько примеров публично доступных хранилищ Docker-образов. В зависимости от ваших потребностей, вы можете использовать одно из них или искать другие альтернативы, которые лучше соответствуют вашим требованиям.