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

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

Итак, вопрос в том, можно ли хранить файлы docker-compose так, как хранят изображения? Если нет, есть ли объяснение, почему люди в Docker думают, что это плохая идея? Наконец, есть ли библиотека файлов docker-compose? Я имею в виду, что изображения на концентраторе докеров можно найти в высоком качестве, но файлы для создания докеров, которые я нашел на github, не очень надежны.

5
Yannick Widmer 13 Мар 2018 в 03:35

2 ответа

Лучший ответ

Теоретически можно хранить файлы Docker-compose и Dockerfiles в системе управления версиями, например, github.

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

Dockerfiles - это инструкции по созданию образов, и они делают это с ограничениями; из данного изображения можно внести только определенное количество изменений (см. ответ здесь: Количество команд в Dockerfile).

Нет такой сильной гарантии, что кто-то другой может создать образ из сценария Dockerfile / docker-compose, который будет вести себя одинаково - зависимости могут быть разными, пакеты меняются и т. Д. Образ докера должен быть автономным, тестируемым и будет скорее всего, будет выполняться то же самое при последующих применениях ( не гарантировано, но обычно).

3
A. Rose 13 Мар 2018 в 00:53

Краткий ответ: я считаю, что это будет рассматриваться как уязвимость в системе безопасности.

Сервер реестра хранит образы, а Docker Hub - это просто реализация сервера реестра. Файл docker-compose.yml - это определение того, как запускать образ. То, как запустить этот образ, включает в себя такие вещи, как монтирование томов, порты для публикации, пространства имен, которые нужно отключить, каждое из которых может создать уязвимость безопасности. Если бы вместо запуска образа с безопасными настройками по умолчанию вы должны были запустить удаленный файл компоновки с неизвестными параметрами безопасности с файлом, размещенным в докере, вы бы открыли себя для простого вектора удаленной атаки, который, скорее всего, был бы связан с докером. чем владелец частного репо. Так что, учитывая высокий приоритет Docker в области безопасности, я сомневаюсь, что вы увидите это у них.

Стандартный подход, когда вы включаете Dockerfile и docker-compose.yml в репозиторий github, является традиционным единым местом для всего. Реестр Docker Hub становится предварительно созданным кешем для образа. Его можно воссоздать, используя файл compose для определения параметров сборки и Dockerfile с остальной частью репозитория, чтобы определить все необходимое для создания образа. Фактически, команда docker build позволяет вам напрямую указывать на публичный репозиторий github, вместо того, чтобы требовать от вас сначала клонировать его локально.

3
BMitch 13 Мар 2018 в 01:04