# Docker часть 2-3 Что нужно сделать: Что нужно сделать: 1. Придумать и описать сценарий использования кэша для сборки, который даст неожиданный результат (для наивного пользователя, который о кэше не задумывается и просто жмет docker build) 2. Придумать и описать сценарий появления мусора в истории слоев образа, который будет незаметен при запуске контейнера из финального образа. Желательно, чтоб этот мусор неадекватно увеличивал размер образа. (без использования docker commit, с ним все очевидно ) Каждый из сценариев опишите как можно более подробно, чтоб его можно было взять, воспроизвести по вашему описанию и удивиться. Что показать ментору: Текст, содержащий оба этих сценария подробно описанных и отражающих, что вы разобрались в слоях и в кэше. 1. Для примера пользы использования кэша сделаю вот такой простенький докерфайл: ``` FROM ubuntu:22.04 RUN apt-get update && apt-get -y upgrade COPY . /app CMD python /app/app.py ``` Если выполнять билд без кэша `--no-cache` он будет выполняться дольше, чем если бы использовался кэш. То есть добавляя какой-то новый слой к этим слоям и собирая новый образ, у нас будут использоваться кэши тех слоев которые ранее были сбилжены. Условно добавив еще какой слой RUN, у нас предыдущие слои, которые я описал выше докер возьмет из кэша. 2. Создаем вот такой простой докер файл: ``` FROM ubuntu:22.04 COPY . /app ``` Из предыдущего примера у меня остался образ ubuntu, теперь можно в этот образ запихнуть файл, который будет весить условно 1гб Для начала создается файл. `touch file.txt` Задаём ему размер `truncate -s 1g file.txt` Делаем build нашего образа. `docker build -t mypro .` После чего у нас появляется image с размером 1.22Gb ``` $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE mypro latest 8a1eff4adce1 23 seconds ago 1.22GB ``` Теперь если сделать на основе этого проекта новый билд, условно даже поменяв размер файл на 700m он будет записан поверх этого билда. ``` FROM mypro COPY . /app ``` ``` truncate -s 700m file.txt docker build -t mypro3 . ``` И получаем: ``` docker images REPOSITORY TAG IMAGE ID CREATED SIZE mypro3 latest 366a288fcde7 13 seconds ago 1.44GB ```