Docker идёт по Dockerfile сверху вниз и переиспользует ранее собранные слои, если инструкция (и её входные файлы) не изменилась. Первый cache miss инвалидирует все последующие слои. Поэтому инструкции располагают от редко меняющихся к часто меняющимся.