Скажем, сравнил с удаленным образом на dockerhub. Я искал канонический способ сделать это, но все, что мне удалось найти, - это скрипты нестабильного bash и тому подобное. Нет официального рекомендованного способа выполнения такой проверки. Вопрос о переполнении стека также пока не дал окончательных ответов. Ни у кого нет подобного вопроса .
Возможность проверить, устарел ли локальный образ по сравнению с его удаленным, очень полезен для сред разработки и промежуточных сред (docker-cloud даже позволяет вам настроить для этого контейнеры автоматического обновления). Я знаю, что существует возможность использования веб-перехватчика для запуска повторного извлечения после успешной сборки изображения, но, допустим, я хочу иметь возможность инициировать проверку с моего сервера, а не заставлять его слушать.
Правильно ли я предполагаю, что в настоящее время недоступна команда docker для выполнения этой проверки, или я пропустил очевидное, собственное решение этой проблемы для докеров?
Нет, в настоящее время нет встроенной опции, позволяющей проверить, не устарело ли изображение. Автоматическое обновление контейнеров - это то, что действительно различается в зависимости от варианта использования; «слепое» обновление до последней версии нетривиально. Например, some-image:latest
может привести к _ полностью_ другому изображению (например, ubuntu:latest
относится к последней версии "LTS", которая в какой-то момент переключилась с 14.04 на 16.04), в то же время some-image:1.2.3
"выглядит" как тег SemVer (ish), но нет никакой гарантии, потому что автор изображения должен решить как схему "тега", так и то, что она означает (в основном, теги - это просто бесплатные форма «этикетка»).
По этой причине рекомендуется использовать неизменяемый идентификатор для ваших контейнеров (например, ubuntu<strong i="9">@sha256</strong>:aabbbcccddd
); это позволяет вам _тестировать_ именно ту версию образа, которую вы используете, и иметь гарантию, что это _ та же_ версия, которая была протестирована в вашем процессе контроля качества.
Сказав вышесказанное, есть несколько вариантов;
docker compose
, вы можете docker-compose pull
получить последнюю версию всех изображений, используемых в вашем стеке компоновкиdocker build --pull .....
принудительно извлечь изображение, определенное в FROM
перед запуском сборкиdocker service update --force --image foo:bar <servicename>
разрешает последнюю версию указанного изображения foo:bar
и "прикрепляет" все экземпляры службы к этой версии.Надеюсь, это ответит на ваш вопрос. Помните, что трекер проблем GitHub предназначен не для использования в качестве форума общей поддержки, а для сообщений об ошибках и запросов функций. Для других типов вопросов рассмотрите возможность использования одного из;
Я собираюсь закрыть этот вопрос, потому что это не ошибка, но не стесняйтесь продолжать разговор 👍
Однако есть разница между «слепым обновлением» и простым получением уведомления об изменении удаленного образа (с использованием того же тега), чтобы вы могли начать сборку и процесс контроля качества.
Конечно. Стабильный механизм, с помощью которого можно обнаруживать обновления контейнера _ без повторной загрузки всего контейнера каждый день_, был бы потрясающим.
Обновления безопасности чрезвычайно важны, и отсутствие этой функции не облегчает поддержание в актуальном состоянии ...
Самый полезный комментарий
Однако есть разница между «слепым обновлением» и простым получением уведомления об изменении удаленного образа (с использованием того же тега), чтобы вы могли начать сборку и процесс контроля качества.