Вступ до кешування в Docker

Вступ до Docker

Tim Sangster

Software Engineer @ DataCamp

Збирання Docker

Завантаження й розпакування файлу за допомогою інструкцій Docker.

RUN curl http://example.com/example_folder.zip
RUN unzip example_folder.zip

Змінить файлову систему й додасть:

/example_folder.zip
/example_folder/
    example_file1
    example_file2

Саме ці зміни зберігаються в образі.

Вступ до Docker

Інструкції Docker пов'язані зі змінами у файловій системі

Кожна інструкція в Dockerfile пов'язана зі змінами, які вона внесла у файлову систему образу.

FROM docker.io/library/ubuntu
 => Дає нам стартову файлову систему з усіма файлами для запуску Ubuntu
COPY /pipeline/ /pipeline/
 => Створює теку /pipeline/
 => Копіює кілька файлів у теку /pipeline/
RUN apt-get install -y python3
 => Додає python3 у /var/lib/
Вступ до Docker

Шари Docker

  • Шар Docker: усі зміни, спричинені однією інструкцією Dockerfile.
  • Образ Docker: усі шари, створені під час збирання

--> Образ Docker: усі зміни файлової системи від усіх інструкцій Dockerfile.

Під час збирання Dockerfile Docker показує, над яким шаром працює:

 => [1/3] FROM docker.io/library/ubuntu 
 => [2/3] RUN apt-get update
 => [3/3] RUN apt-get install -y python3
Вступ до Docker

Кешування в Docker

Послідовні збірки значно швидші, бо Docker перевикористовує шари, які не змінювались.

Повторний запуск збірки:

 => [1/3] FROM docker.io/library/ubuntu
 => CACHED [2/3] RUN apt-get update
 => CACHED [3/3] RUN apt-get install -y python3

Повторний запуск зі змінами:

 => [1/3] FROM docker.io/library/ubuntu
 => CACHED [2/3] RUN apt-get update
 => [3/3] RUN apt-get install -y R
Вступ до Docker

Як працює кешування в Docker

Розуміння кешування шарів пояснює, чому інколи образи не змінюються після перебудови.

  • Docker не знає, коли вийшла нова версія python3.
  • Docker використає кешовані шари, бо інструкції ідентичні попереднім збіркам.
 => [1/3] FROM docker.io/library/ubuntu
 => CACHED [2/3] RUN apt-get update
 => CACHED [3/3] RUN apt-get install -y python3
Вступ до Docker

Як працює кешування в Docker

Це допомагає писати Dockerfile, що збираються швидше, бо не всі шари слід перебудовувати.

У цьому Dockerfile усі інструкції треба буде перебудувати, якщо файл pipeline.py зміниться:

FROM ubuntu
COPY /app/pipeline.py /app/pipeline.py
RUN apt-get update
RUN apt-get install -y python3
 => [1/4] FROM docker.io/library/ubuntu
 => [2/4] COPY /app/pipeline.py /app/pipeline.py
 => [3/4] RUN apt-get update
 => [4/4] RUN apt-get install -y python3
Вступ до Docker

Як працює кешування в Docker

Це допомагає писати Dockerfile, що збираються швидше, бо не всі шари слід перебудовувати.

У цьому Dockerfile потрібно буде повторно виконати лише інструкцію COPY.

FROM ubuntu
RUN apt-get update
RUN apt-get install -y python3
COPY /app/pipeline.py /app/pipeline.py
 => [1/4] FROM docker.io/library/ubuntu
 => CACHED [2/4] RUN apt-get update
 => CACHED [3/4] RUN apt-get install -y python3
 => [4/4] COPY /app/pipeline.py /app/pipeline.py
Вступ до Docker

Давайте потренуємось!

Вступ до Docker

Preparing Video For Download...