Подтвердить что ты не робот

Dockerfile или реестр? Что является предпочтительной стратегией распространения?

Если вы выполняете сервис с Dockerfile, вам предпочтительнее создавать изображение с помощью файла Docker и вставлять его в реестр, а не распространять Dockerfile (и репо) для людей, чтобы создавать их изображения?

Какие варианты использования предпочитают дистрибутив Dockerfile + repo и какой вариант использования использует реестр?

4b9b3361

Ответ 1

Я бы предположил, что один и тот же вопрос может быть применен к установкам исходного кода и бинарного пакета.

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

Ответ 2

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

Как правило, это можно было бы сделать, нажав их образ на index.docker.io, однако у нас есть собственный код, который мы не могли бы опубликовать в Мир. Вы также можете оказаться в такой ситуации, если планируете создать размещенный продукт вокруг Docker.

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

Ответ 3

Частные репозитории на вашем собственном сервере также являются опцией.

Чтобы запустить сервер, клонируйте https://github.com/dotcloud/docker-registry на свой собственный сервер.

Чтобы использовать свой собственный сервер, прикрепите тег к адресу узла реестра. Например:

# Tag to create a repository with the full registry location.
# The location (e.g. localhost.localdomain:5000) becomes
# a permanent part of the repository name
$ sudo docker tag 0u812deadbeef your_server.example.com:5000/repo_name

# Push the new repository to its home location on your server
$ sudo docker push your_server.example.com:5000/repo_name

(см. http://docs.docker.io.s3-website-us-west-2.amazonaws.com/use/workingwithrepository/#private-registry)

Ответ 4

Я думаю, что это немного зависит от вашего приложения, но я бы предпочел Dockerfile:

Файл Docker...

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

Изображение в реестре...

  • ... уже построена и готова!
  • ... необходимо сохранить. Если вы установите новый код или обновите приложение, вы также должны обновить изображение.
  • ... необходимо тщательно обработать: можно ли изменить конфигурацию? Как вы обрабатываете журналы? Насколько оно большое? Вы упаковываете NGINX в изображение или это часть внешнего мира? Как сказал @Mark O'Connor, вы заморозите определенную конфигурацию, но это может быть не конфигурация, которую кто-то хочет использовать.

Вот почему я бы предпочел Dockerfile. То же самое с Vagrantfile - он предпочел бы Vagrantfile вместо образа VM. И то же самое с ANT или Maven script - он предпочел бы сборку script вместо упакованного артефакта (по крайней мере, если я хочу внести код в проект).