Синхронизировать образы хостов docker с локальным реестром

#docker

#docker

Вопрос:

Как я могу убедиться, что docker build синхронизирует кэш docker с реестром docker?

Представьте себе этот сценарий:

1 — Я создаю образ docker на своем ноутбуке для weblogic под названием:

my-local-registry:5000/weblogic:12.2.1.3

2 — Затем я помещаю его в наш локальный реестр docker:

docker push my-local-registry:5000/weblogic:12.2.1.3

3 — на одном из наших серверов (например, host-1) у меня есть файл docker, в котором он использует этот образ weblogic для создания образа приложения, что-то вроде этого:

 FROM my-local-registry:5000/weblogic:12.2.1.3

USER weblogic
WORKDIR /u01/scripts
RUN deploy_application.sh
.
.
.
  

4 — Я создаю образ приложения:

docker build -t my_application .

5 — На хосте-1 я выполняю команду docker images и вижу 2 изображения. Один из них — weblogic, который извлекается из локального реестра, а другой — изображение приложения.

7 — Теперь я обновляю weblogic image на своем ноутбуке (например, применяю новый патч безопасности) и нажимаю его снова:

docker push my-local-registry:5000/weblogic:12.2.1.3

8 — На хосте-1 я заново создаю образ приложения. Поскольку в кэше docker уже есть weblogic image, он не будет использовать обновленный.

Как я могу заставить docker проверять, синхронизировано ли какое-либо существующее изображение в кэше docker с локальным реестром, когда дело доходит до команды FROM? (Когда я запускаю docker pull my-local-registry:5000/weblogic:12.2.1.3 , он обновляет кэш docker, но я не хочу делать это каждый раз!)

Заранее большое спасибо.

Ответ №1:

Я нашел решение. Что мне было нужно, так это — вытащить

docker build --pull ...

Он сравнит кэш docker с реестром docker и извлечет обновленные слои из реестра docker, если они не существуют в кэше docker.