Какой алгоритм Docker использует для аннулирования кэша? - PullRequest
0 голосов
/ 12 ноября 2018

Чтобы уменьшить время сборки образа Docker на динамически подготовленных блоках EC2, я решил использовать следующий метод: - запускать 'docker-compose build' на главном хосте каждую ночь - клонировать весь каталог / var / lib / docker с главного хоста на новый ящик - запустить 'docker-compose build' на новом окне; и если соответствующие файлы не были изменены, сборка должна использовать кеш. Но на самом деле Docker не использует кеш. Я заметил, что процесс сборки на новом хосте создает разные хэши для одного и того же файла (я имею в виду - для файла с одинаковым содержимым).

В этом посте https://hackernoon.com/working-with-the-docker-build-cache-to-autoscale-our-jenkins-nodes-37b63a3dd2a другое mtime было объяснением аннулирования кэша докера. Но, насколько я тестировал, mtime не влияет на хеш-значение, создаваемое сборкой Docker. Что мне не хватает?

Спасибо, Виталий

Я использую Docker версии 18.06.1-ce и docker-compose версии 1.23.1 в Ubuntu 16.04.

1 Ответ

0 голосов
/ 12 ноября 2018

Я полагаю, что docker вычисляет контрольную сумму для файлов, используя tarsum spec . Это включает следующих заголовков :

  • 'имя' - строка
  • 'mode' - строка целого числа base10
  • 'uid' - строка целого числа
  • 'gid' - строка целого числа
  • 'размер' - строка целого числа
  • 'mtime' (только Version0) - строка целого числа секунд с 1970-01-01 00:00:00 UTC
  • 'typeflag' - строка символа
  • 'linkname' - строка
  • 'uname' - строка
  • 'gname' - строка
  • 'devmajor' - строка целого числа
  • 'devminor' - строка целого числа

Поля, на которые я бы хотел обратить внимание, включают имя файла (которое должно быть чувствительно к регистру), права доступа к файлу (режим), владелец (uid / gid) и размер.

Обратите внимание, что поле mtime зависит от версии, поэтому, если вы изначально строили образы в более старой версии докера, mtime может быть включено в расчет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...