Да, похоже, что вы правы и кеш не инвалидируется, если SHA отличается для одного и того же тега. Собственно, docker даже не лезет его проверять, если образ с нужным тегом уже есть локально. Чтобы образ в кеше обновился, нужно принудительно сделать docker pull или использовать --no-cache, но тогда мы очевидно теряем всё кеширование со всеми его прелестями.
Любопытно, что официальная документация про это особенно не распространяется, рекомендуя именно описанный мною подход (см. здесь, например, причём местами теми же словами), но описывает способ принудительно запинить нужную версию тега через дайджест (SHA).
Впрочем, кеш далеко не вечный (у того же GitHub'а значение TTL по умолчанию 7 дней), поэтому подход с использованием тега с минорной (но не патч) версией всё равно выглядит рабочим. Но да, в случае обнаружения серьёзных уязвимостей в базовом образе нужно будет вручную инвалидировать кеш для использования более новой версии. Это, впрочем, справедливо и для случая, когда используется тег с патч-версией, с той лишь разницей, что в последнем случае придётся либо вручную поднимать патч-версию по мере выхода новых образов, либо прикрутить какой-нибудь dependabot для этих целей.
Боюсь, что не очень понимаю сценарий, при котором это может стать проблемой.
Если я деплою новую версию, то я (вернее, как правило, CI/CD пайплайн) пересобираю docker image, в этом случае docker, конечно, попытается использовать базовый образ из кеша (если кеширование настроено, конечно), но он же не просто смотрит на тег, он сравнивает хеш Если хеш меняется, то docker выкачает новую версию образа.
Я бы не стал указывать версию образа с точностью до версии патча (то есть вместо python:3.12.1-slimиспользовал бы python:3.12-slim). Причина: обычно подтягивать патчи уязвимостей и мелких багов — это хорошая идея.
Ценность .dockerignore сильно варьируется в зависимости от языка программирования. Если в случае с python он действительно позволяет не тянуть лишний мусор (поскольку мы обычно копируем все исходники), то в случае с той же Java как правило достаточно скопировать один только jar-файл. В этом случае можно обойтись без развесистого .dockerignore и использовать менее жадное копирование. Впрочем, @titan_pc выше уже отметил этот момент.
Удивительно, что ничего не сказано про сборку под конкретную платформу (хотя это была моя первая мысль, когда я увидел название статьи), но, возможно, это тут вне скоупа.
Если вы утверждаете, что "все знают", то "железобетонные доказательства" не помешали бы. А так вы пересказываете какие-то неподтверждённые байки.
То есть, очень здорово, что вы делитесь своим мнением по поводу произошедшего, но, пожалуйста, не надо выдавать его за истину, не приводя доказательств.
Есть и другая теория происхождения (тоже неподтверждённая) — якобы отверстие было сделано ещё на Земле, каким-то из сотрудников Энергии, который якобы даже был идентифицирован. Вот, например, RT (даже RT!) пишет про это со ссылкой на РИА Новости. Более того, Рогозин утверждал, что вся информация у Роскосмоса есть, но делиться они ей не будут, что плохо вписывается в теорию о вине Серины — странно не воспользоваться таким шикарным поводом уколоть американскую сторону, если уже все доказательства есть.
В любом случае, ответ на исходный вопрос — достоверной информации по-прежнему нет.
«1,3 млн просмотров», «13 тыс.» лайков и так далее, а точную цифру нигде не найти
Конкретно в этом случае это, скорее, техническое ограничение. Не ожидаете же вы, что YouTube будет показывать вам точную циферку прямо из базы данных? Это просто какое-то закешированное приблизительное значение. По крайней мере в этом случае заранее задаются ожидания на ту самую точность этого значения.
Чудесный уровень язвительности, но, к сожалению, впустую. Перечитайте статью ещё и раз и попробуйте сами себе ответить на вопрос, как решение регулятора ЕС о том, что Valve нарушает законы ЕС, должно автоматически как-то поменять что-либо касательно стран, не имеющих к ЕС никакого отношения.
В Германии прохождение курсов первой помощи является обязательным для получения водительских прав. И @larasageверно говорит — в обязанности вменяется не "позвонить", там есть совершенно чёткий список действий, оказание первой помощи только часть этого списка.
остальное что я "наверное умею" недоказуемо
Опять же, в Германии доказуемо, поскольку прохождение курсов первой помощи отслеживается при необходимости. А не проходил курсов первой помощи — значит, не умеешь оказывать первую помощь, поэтому стой в сторонке и не мешай (а лучше найди того, кто умеет).
При этом не знаю, что работает — строгость закона или ответственность обычных людей, но даже упавший на улице с велосипеда человек мгновенно получит несколько вопросов, насколько он в порядке и надо ли что-то сделать.
Как только появляется через государственные преференции монополист (что и произошло, увы, с Яндексом)
Боюсь, вы что-то путаете. Какие государственные преференции? Конкуренты были (и есть), но либо сервис, который они предоставляли, был менее интересен пользователям, либо они не умели его продвигать (и нет, это не из-за "государственныз преференций"; и да, Яндекс занял доминирующее положение на рынке во многих областях задолго до желания законотворцев оградиться от всего забугорного и предустанавливать отечественный софт повсюду). Монополист Яндекс или нет (и в каких сферах) — это вопрос, на который каждый ответит по-своему (а должна, согласно законам, по крайней мере, отвечать ФАС). И да, монополии убивают отрасль. Но вот про государственные преференции — это вы немного промахнулись.
Это смотря какую часть "богатой" Германии вы имеете в виду. В Берлине/Мюнхене 80К может легко получать mid-level разработчик (при условии, что он не совсем уж "плывёт по течению", а хоть немного заинтересован в развитии своей карьеры). Senior (при тех же условиях) может зарабатывать около 100К, и это вне FAANG'а, который частично тоже присутствует в Германии. Про SRE и прочие роли в IT не знаю, но у меня нет оснований считать, что ситуация там драматично отличается.
Да, похоже, что вы правы и кеш не инвалидируется, если SHA отличается для одного и того же тега. Собственно, docker даже не лезет его проверять, если образ с нужным тегом уже есть локально. Чтобы образ в кеше обновился, нужно принудительно сделать
docker pull
или использовать--no-cache
, но тогда мы очевидно теряем всё кеширование со всеми его прелестями.Любопытно, что официальная документация про это особенно не распространяется, рекомендуя именно описанный мною подход (см. здесь, например, причём местами теми же словами), но описывает способ принудительно запинить нужную версию тега через дайджест (SHA).
Впрочем, кеш далеко не вечный (у того же GitHub'а значение TTL по умолчанию 7 дней), поэтому подход с использованием тега с минорной (но не патч) версией всё равно выглядит рабочим. Но да, в случае обнаружения серьёзных уязвимостей в базовом образе нужно будет вручную инвалидировать кеш для использования более новой версии. Это, впрочем, справедливо и для случая, когда используется тег с патч-версией, с той лишь разницей, что в последнем случае придётся либо вручную поднимать патч-версию по мере выхода новых образов, либо прикрутить какой-нибудь dependabot для этих целей.
Боюсь, что не очень понимаю сценарий, при котором это может стать проблемой.
Если я деплою новую версию, то я (вернее, как правило, CI/CD пайплайн) пересобираю docker image, в этом случае docker, конечно, попытается использовать базовый образ из кеша (если кеширование настроено, конечно), но он же не просто смотрит на тег, он сравнивает хеш Если хеш меняется, то docker выкачает новую версию образа.
Спасибо за статью, по делу и коротко.
У меня будет пара (субъективных) комментариев:
Я бы не стал указывать версию образа с точностью до версии патча (то есть вместо
python:3.12.1-slim
использовал быpython:3.12-slim
). Причина: обычно подтягивать патчи уязвимостей и мелких багов — это хорошая идея.Ценность
.dockerignore
сильно варьируется в зависимости от языка программирования. Если в случае с python он действительно позволяет не тянуть лишний мусор (поскольку мы обычно копируем все исходники), то в случае с той же Java как правило достаточно скопировать один только jar-файл. В этом случае можно обойтись без развесистого.dockerignore
и использовать менее жадное копирование. Впрочем, @titan_pc выше уже отметил этот момент.Удивительно, что ничего не сказано про сборку под конкретную платформу (хотя это была моя первая мысль, когда я увидел название статьи), но, возможно, это тут вне скоупа.
Я думаю, что @Lev3250 имел в виду не экран за рулём (на руле?), а подиум для зарядки телефонов в центральной нижней части передней консоли.
Если вы утверждаете, что "все знают", то "железобетонные доказательства" не помешали бы. А так вы пересказываете какие-то неподтверждённые байки.
То есть, очень здорово, что вы делитесь своим мнением по поводу произошедшего, но, пожалуйста, не надо выдавать его за истину, не приводя доказательств.
Есть и другая теория происхождения (тоже неподтверждённая) — якобы отверстие было сделано ещё на Земле, каким-то из сотрудников Энергии, который якобы даже был идентифицирован. Вот, например, RT (даже RT!) пишет про это со ссылкой на РИА Новости. Более того, Рогозин утверждал, что вся информация у Роскосмоса есть, но делиться они ей не будут, что плохо вписывается в теорию о вине Серины — странно не воспользоваться таким шикарным поводом уколоть американскую сторону, если уже все доказательства есть.
В любом случае, ответ на исходный вопрос — достоверной информации по-прежнему нет.
Конкретно в этом случае это, скорее, техническое ограничение. Не ожидаете же вы, что YouTube будет показывать вам точную циферку прямо из базы данных? Это просто какое-то закешированное приблизительное значение. По крайней мере в этом случае заранее задаются ожидания на ту самую точность этого значения.
"замерам" -> "замкнутым", конечно. Отредактировать комментарий уже не могу.
А объекты в точках Лагранжа двигаются равномерно и прямолинейно или всё-таки по замерам траекториям?
Чудесный уровень язвительности, но, к сожалению, впустую. Перечитайте статью ещё и раз и попробуйте сами себе ответить на вопрос, как решение регулятора ЕС о том, что Valve нарушает законы ЕС, должно автоматически как-то поменять что-либо касательно стран, не имеющих к ЕС никакого отношения.
В Германии прохождение курсов первой помощи является обязательным для получения водительских прав. И @larasageверно говорит — в обязанности вменяется не "позвонить", там есть совершенно чёткий список действий, оказание первой помощи только часть этого списка.
Опять же, в Германии доказуемо, поскольку прохождение курсов первой помощи отслеживается при необходимости. А не проходил курсов первой помощи — значит, не умеешь оказывать первую помощь, поэтому стой в сторонке и не мешай (а лучше найди того, кто умеет).
При этом не знаю, что работает — строгость закона или ответственность обычных людей, но даже упавший на улице с велосипеда человек мгновенно получит несколько вопросов, насколько он в порядке и надо ли что-то сделать.
Боюсь, вы что-то путаете. Какие государственные преференции? Конкуренты были (и есть), но либо сервис, который они предоставляли, был менее интересен пользователям, либо они не умели его продвигать (и нет, это не из-за "государственныз преференций"; и да, Яндекс занял доминирующее положение на рынке во многих областях задолго до желания законотворцев оградиться от всего забугорного и предустанавливать отечественный софт повсюду). Монополист Яндекс или нет (и в каких сферах) — это вопрос, на который каждый ответит по-своему (а должна, согласно законам, по крайней мере, отвечать ФАС). И да, монополии убивают отрасль. Но вот про государственные преференции — это вы немного промахнулись.
Это смотря какую часть "богатой" Германии вы имеете в виду. В Берлине/Мюнхене 80К может легко получать mid-level разработчик (при условии, что он не совсем уж "плывёт по течению", а хоть немного заинтересован в развитии своей карьеры). Senior (при тех же условиях) может зарабатывать около 100К, и это вне FAANG'а, который частично тоже присутствует в Германии.
Про SRE и прочие роли в IT не знаю, но у меня нет оснований считать, что ситуация там драматично отличается.