---
# System prepended metadata

title: Docker часть 2-3

---


# 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
```