Очень хорошие пояснения есть в статье Docker performance on Azure Pipelines agents: несколько образов я собрал для внутреннего использования и они сделаны на основе mcr.microsoft.com/windows/servercore:ltsc2019 и mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019.
И конечно же для них я рассчитывал на использование предустановленных docker образов в azure виртуалке: данные базовых образов уже есть, мои образы сделаны на их основе и docker не должен скачивать несколько гигабайт на каждом запуске задачи.
Но я промахнулся: я забыл про регулярные обновления этих предустановленных docker образов. В azure виртуалку включен docker образ только одной последней версии. А мои docker образы собраны на основе какой-то предыдущей версии базового образа и выложены на dockerhub.
В результате мои образы из dockerhub перестали использовать предустановленные образы (имена и теги у них совпадают, но не совпадает sha256) и docker начал качать гигабайты с dockerhub. Это занимает примерно 15 минут: все медленно потому что azure вируалка в одном датацентре, а dockerhub в другом.
Скорее всего я сделаю изменения в сборке моих образов: для них у меня будет ежедневная сборка, которая должна гарантировать, что базовый docker образ в моих образах будет тем же самым образом, который предустановлен на azure виртуалке.
Вместо dockerhub можно использовать Azure Container Registry: все данные будут в одном датацентре, но за это сразу хотят дополнительные деньги.
Комментариев нет:
Отправить комментарий