Должен ли я использовать Dockerfiles или коммиты изображений?

Я немного запутался в этих двух вариантах. Похоже, они связаны между собой. Тем не менее, они не совсем совместимы.

Например, кажется, что использование Dockerfiles означает, что на самом деле вы не должны фиксировать изображения, потому что вы должны просто отслеживать Dockerfile в git и вносить в него изменения. Тогда нет никакой двусмысленности относительно того, что является авторитетным.

Тем не менее, коммиты изображений кажутся действительно хорошими. Это так здорово, что вы можете просто изменить контейнер напрямую и пометить изменения, чтобы создать другое изображение. Я понимаю, что вы даже можете получить что-то вроде diff файловой системы из истории фиксации изображения. Потрясающие. Но тогда вы не должны использовать Dockerfiles. В противном случае, если вы сделали коммит изображения, вам придется вернуться к вашему Dockerfile и внести некоторые изменения, которые отражают то, что вы сделали.

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

У кого-нибудь есть мысли по этому поводу? Считается ли плохой практикой использование фиксации изображений? Или я должен просто отпустить мое вложение, чтобы манифестировать файлы из моих кукольных дней? Что я должен делать?

Обновить:

Для всех тех, кто думает, что это вопрос, основанный на мнении, я не уверен. В этом есть некоторые субъективные качества, но я думаю, что это в основном объективный вопрос. Кроме того, я считаю, что хорошая дискуссия на эту тему будет информативной.

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

Обновление - 2017/7/18:

Я только недавно обнаружил законное использование для фиксации изображений. Мы просто настроили конвейер CI в нашей компании, и на одном из этапов конвейера наши тесты приложений выполняются внутри контейнера. Нам нужно получить результаты покрытия из вышедшего контейнера после того, как процесс запуска тестов сгенерировал их (в файловой системе контейнера) и контейнер прекратил работу. Для этого мы используем коммиты изображений, фиксируя остановленный контейнер для создания нового образа, а затем выполняя команды, которые отображают и выводят файл покрытия в стандартный вывод. Так что удобно иметь это. Помимо этого очень специфического случая, мы используем Dockerfiles для определения нашей среды.

Ответы на вопрос(2)

Ваш ответ на вопрос