Тег latest в проде опасен тем, что он указывает не на фиксированную версию образа, а на «то, что сейчас залили», и может быть бесшовно переназначен на другой образ. Из-за этого деплой и перезапуски становятся непредсказуемыми, ломается воспроизводимость и сильно усложняется откат. В бою всегда нужно использовать конкретные версии или digest-ы образов, а не latest.
В Docker тег latest — это не особый системный маркер «последней стабильной версии», а всего лишь обычное имя тега, которое по умолчанию подставляется, если вы тег не указали. Его можно в любой момент перезаписать, привязав к новому образу, поэтому опираться на него в продакшене опасно.
Какие проблемы это создаёт в боевой среде:
latest, часто неясно, какая именно версия сейчас крутится и к какому образу откатываться; если тег перезаписан, до нужного образа можно вообще не дотянуться.latest.Безопасное правило: в продакшене всегда «пиновать» образ на конкретный идентификатор — это может быть версионированный тег наподобие 1.4.2 или, ещё надёжнее, digest вида @sha256:.... Тогда вы однозначно знаете, какой именно образ запущен, легко отслеживаете, какую версию выкатили, и можете уверенно откатиться назад.
В дев-окружениях и локально latest нередко используют осознанно, чтобы всегда подхватывать самый свежий билд, но в проде это почти всегда анти-паттерн.
В первом примере запуск с тегом latest может в разное время стартовать разные версии сервиса, тогда как явный тег версии гарантирует один и тот же образ при каждом запуске.
Во втором примере все новые поды будут получать образ с тегом latest, который может незаметно смениться в реестре; привязка к конкретной версии или digest-у делает поведение Deployment детерминированным и управляемым для релизов и откатов.
Отметьте свой прогресс