Я немного запутался в этих двух вариантах. Они, похоже, связаны между собой. Однако они не совместимы.
Например, кажется, что использование Dockerfiles означает, что вы действительно не должны делать снимки, потому что вы должны просто отслеживать файл Docker в git и вносить в него изменения. Тогда нет никакой двусмысленности в отношении того, что является авторитетным.
Однако, компиляция изображения кажется действительно приятной. Это так здорово, что вы можете просто изменить контейнер непосредственно и пометить изменения, чтобы создать другое изображение. Я понимаю, что вы даже можете получить что-то вроде файловой системы diff от истории фиксации изображения. Потрясающие. Но тогда вы не должны использовать Dockerfiles. В противном случае, если вы сделали фиксацию изображения, вам придется вернуться к своему файлу Docker и внести некоторые изменения, которые представляют, что вы сделали.
Итак, я разорван. Мне нравится идея фиксации изображения: вам не нужно представлять ваше состояние изображения в файле Docker - вы можете просто отслеживать его напрямую. Но мне нелегко отказаться от идеи какого-либо файла манифеста, который дает вам краткий обзор того, что на изображении. Это также смущает видеть две функции в одном программном пакете, которые кажутся несовместимыми.
Есть ли у кого-нибудь мысли по этому поводу? Является ли плохая практика использовать коммиты изображения? Или я должен просто отпустить мою привязанность к файлам манифеста из моих кукольных дней? Что мне делать?
Обновление
Для всех, кто считает, что это вопрос, основанный на мнениях, я не уверен. Есть некоторые субъективные качества, но я думаю, что это в основном объективный вопрос. Кроме того, я считаю, что хорошее обсуждение этой темы будет информативным.
В конце концов, я надеюсь, что кто-нибудь, кто прочтет это сообщение, уйдет с лучшим пониманием того, как Dockerfiles и изображение совершают связь друг с другом.
Обновление - 2017/7/18:
Недавно я обнаружил законное использование для фиксации изображения. Мы только создали трубопровод CI в нашей компании, и на одном этапе трубопровода наши тесты приложений запускаются внутри контейнера. Нам нужно получить результаты покрытия из выходящего контейнера после того, как процесс тестового запуска выполнил их (в файловой системе контейнера), и контейнер прекратил работу. Мы используем фиксацию изображения, чтобы сделать это, совершив остановленный контейнер для создания нового изображения, а затем запустив команды, которые отображают и выгружают файл покрытия в stdout. Так что это удобно для этого. Помимо этого особого случая, мы используем Dockerfiles для определения нашей среды.