Деплой и инфра
Image layers: тест на припоминание
Припоминание сильнее перечитывания. На каждый вопрос проговори или запиши полный ответ по памяти, прежде чем открыть модельный — именно усилие припоминания закрепляет механизм, когда ты ревьюишь реальный Dockerfile.
Реконструируй ключевые механизмы юнита — кэш как префикс по содержимому, правило порядка, ужатие через multi-stage, компромиссы базовых образов и ловушку секрета в неизменяемом слое — не подглядывая в урок.
- 01Что такое слой Docker-образа и по каким двум входам build cache ключует каждый слой?
- 02Сформулируй кардинальное правило порядка и объясни, почему COPY . . перед RUN npm ci рушит время сборки.
- 03Почему 'RUN apt-get update' и отдельный 'RUN apt-get install' отдают устаревшие пакеты, и как это исправить?
- 04Как multi-stage build ужимает образ и какие примерно дельты размера ожидать?
- 05Сравни distroless и alpine как базовые образы финального stage — когда тянуться за каждым?
- 06Почему удаление секрета в более позднем слое его не убирает, и что делать вместо этого?
Если ты смог реконструировать каждый ответ по памяти, ты держишь хребет юнита: слой — это diff с ключом по содержимому, кэш — строгий префикс, RUN ключуется по тексту, а не по эффекту, порядок от редко- к часто-меняющемуся держит дорогой install в кэше, multi-stage build компилирует жирно и отгружает тонко, distroless меняет shell на минимальную attack surface, а секрет, добавленный и затем rm’нутый, навсегда живёт в раннем слое — поэтому он не должен становиться слоем вообще.