Создание образа для генерации кэша сборки
На этом шаге мы соберём простой Docker-образ, чтобы создать кэш сборки. Кэш сборки Docker — это механизм, ускоряющий процесс сборки за счёт повторного использования слоёв из предыдущих сборок. При сборке Docker-образа каждая инструкция в Dockerfile создаёт слой. Если инструкция не изменилась с последней сборки, Docker может повторно использовать существующий слой вместо его пересборки.
Сначала создадим директорию для нашего проекта и перейдём в неё.
mkdir ~/project/docker-cache-demo
cd ~/project/docker-cache-demo
Теперь создадим простой Dockerfile. Этот Dockerfile скопирует файл в образ, а затем выполнит команду.
nano Dockerfile
Добавим следующее содержимое в Dockerfile
:
FROM ubuntu:latest
COPY . /app
RUN echo "Hello, Docker Cache!" > /app/message.txt
CMD ["cat", "/app/message.txt"]
Сохраним и закроем файл.
Далее создадим простой файл, который будет скопирован в образ.
nano message.txt
Добавим содержимое в message.txt
:
This is a test message.
Сохраним и закроем файл.
Теперь соберём Docker-образ. Мы присвоим образу тег cache-demo
.
docker build -t cache-demo .
Вы увидите вывод, показывающий, что Docker собирает образ шаг за шагом. Каждый шаг соответствует инструкции в Dockerfile. Docker загрузит образ ubuntu:latest
, если он ещё не присутствует, скопирует файл message.txt
, а затем выполнит команду echo
.
После завершения сборки можно проверить создание образа, выведя список доступных образов.
docker images
В списке образов должен появиться cache-demo
.
Теперь соберём образ снова, не внося изменений в Dockerfile или message.txt
.
docker build -t cache-demo .
На этот раз процесс сборки будет значительно быстрее. Docker повторно использует существующие слои из предыдущей сборки, так как инструкции в Dockerfile и содержимое message.txt
не изменились. В выводе для большинства шагов будет указано "Using cache". Это демонстрирует, как кэш сборки Docker ускоряет последующие сборки.