Как мне получить последнее нажатие изображения с тегом x.x, если у меня уже есть старое нажатие x.x изображения?

#docker #dockerfile #docker-registry

#docker #dockerfile #docker-реестр

Вопрос:

В 2019 году я сделал pull-образ Python 3.6. После этого я был уверен, что изображение самообновляется (я не использовал его активно, я просто надеялся, что последние push-файлы сами были извлечены из репозитория или что-то в этом роде), но я был удивлен, когда случайно заметилдата загрузки / создания — 2019 год.

Вопрос: Как работает извлечение изображения? Существуют ли флаги, позволяющие проверять хэш слоя / его релевантность * при каждом создании изображения? Возможно, есть способ установить эту проверку через конфигурационный файл docker daemon? Или мне нужно каждый раз удалять базовое изображение, чтобы получить новое изображение?

Что я хочу: чтобы каждый раз, когда я создаю свои изображения, базовое изображение проверялось на наличие последнего нажатия (публикации изображения) в репозитории docker hub.

Примечание: я говорю об изображениях с идентичным тегом. Кроме того, я не боюсь перестраивать свои изображения, нет никакой цели их сохранять.

Спасибо.

Ответ №1:

Вам нужно явно docker pull указать изображение, чтобы получать обновления. Для ваших пользовательских изображений есть docker build --pull docker-compose build --pull опции и, которые будут извлекать базовое изображение (хотя для них нет опции «вытягивать» docker-compose up --build ).

Без этого Docker никогда не будет проверять наличие обновлений для изображения, которое у него уже есть. Если ваш Dockerfile запускается FROM python:3.6 , и у вас уже есть локальный образ с этим именем и тегом, Docker просто использует его, не связываясь с Docker Hub. Если у вас его нет, Docker вытащит его один раз, а затем он будет у вас локально.

Еще одна вещь, на которую следует обратить внимание, это то, что обновления в конечном итоге прекращаются. Если вы посмотрите на страницу с изображением Docker Hub python , вы заметите, что для Python 3.5 больше нет перестроек. Если вы привязываете к очень конкретной версии исправления, автоматические сборки обычно создают только последнюю версию исправления для каждой поддерживаемой младшей версии; если ваш образ является FROM python:3.6.11 , он никогда не получит обновлений, потому что 3.6.12 являетсяпоследняя версия 3.6.x.