#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.