Introductie tot Docker-caching

Introductie tot Docker

Tim Sangster

Software Engineer @ DataCamp

Docker build

Een bestand downloaden en uitpakken met Docker-instructies.

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

Past het bestandssysteem aan en voegt toe:

/example_folder.zip
/example_folder/
    example_file1
    example_file2

Deze wijzigingen worden in de image opgeslagen.

Introductie tot Docker

Docker-instructies gekoppeld aan bestandssysteemwijzigingen

Elke instructie in het Dockerfile is gekoppeld aan de wijzigingen die het in het image-bestandssysteem heeft gemaakt.

FROM docker.io/library/ubuntu
 => Geeft ons een start-bestandssysteem met alle bestanden om Ubuntu te draaien
COPY /pipeline/ /pipeline/
 => Maakt de map /pipeline/
 => Kopieert meerdere bestanden naar /pipeline/
RUN apt-get install -y python3
 => Voegt python3 toe aan /var/lib/
Introductie tot Docker

Docker-lagen

  • Docker-laag: alle wijzigingen door één Dockerfile-instructie.
  • Docker-image: alle lagen gemaakt tijdens een build

--> Docker-image: alle wijzigingen aan het bestandssysteem door alle Dockerfile-instructies.

Tijdens het bouwen laat Docker zien aan welke laag het werkt:

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

Docker-caching

Opeenvolgende builds zijn veel sneller omdat Docker onveranderde lagen hergebruikt.

Build opnieuw uitvoeren:

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

Build opnieuw met wijzigingen:

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

Docker-caching begrijpen

Weten wanneer lagen gecachet zijn helpt te snappen waarom images soms niet veranderen na een rebuild.

  • Docker weet niet wanneer een nieuwe versie van python3 uitkomt.
  • Docker gebruikt gecachete lagen omdat de instructies identiek zijn aan eerdere builds.
 => [1/3] FROM docker.io/library/ubuntu
 => CACHED [2/3] RUN apt-get update
 => CACHED [3/3] RUN apt-get install -y python3
Introductie tot Docker

Docker-caching begrijpen

Helpt ons Dockerfiles sneller te bouwen, omdat niet alle lagen opnieuw hoeven.

In het volgende Dockerfile moeten alle instructies opnieuw als het bestand pipeline.py is gewijzigd:

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
Introductie tot Docker

Docker-caching begrijpen

Helpt ons Dockerfiles sneller te bouwen, omdat niet alle lagen opnieuw hoeven.

In het volgende Dockerfile hoeft alleen de COPY-instructie opnieuw te draaien.

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
Introductie tot Docker

Laten we oefenen!

Introductie tot Docker

Preparing Video For Download...