Introduktion till Docker-caching

Introduktion till Docker

Tim Sangster

Software Engineer @ DataCamp

Docker build

Ladda ned och packa upp en fil med Docker-instruktioner.

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

Ändrar filsystemet och lägger till:

/example_folder.zip
/example_folder/
    example_file1
    example_file2

Det är dessa ändringar som lagras i imagen.

Introduktion till Docker

Docker-instruktioner är kopplade till filsystemändringar

Varje instruktion i Dockerfile är kopplad till de ändringar den gjort i imagens filsystem.

FROM docker.io/library/ubuntu
 => Gives us a file system to start from with all files needed to run Ubuntu
COPY /pipeline/ /pipeline/
 => Creates the /pipeline/ folder
 => Copies multiple files in the /pipeline/ folder
RUN apt-get install -y python3
 => Add python3 to /var/lib/
Introduktion till Docker

Docker-lager

  • Docker-lager: Alla ändringar som orsakas av en enskild Dockerfile-instruktion.
  • Docker-image: Alla lager som skapas under en build

--> Docker-image: Alla filsystemändringar från samtliga Dockerfile-instruktioner.

Vid bygget av en Dockerfile visar Docker vilket lager det arbetar med:

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

Docker-caching

Efterföljande byggen går mycket snabbare eftersom Docker återanvänder lager som inte ändrats.

Köra om ett bygge:

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

Köra om ett bygge med ändringar:

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

Förstå Docker-caching

Att förstå när lager cachelagras hjälper oss förstå varför images ibland inte ändras efter ett ombygge.

  • Docker kan inte veta när en ny version av python3 släpps.
  • Docker använder cachelagrade lager eftersom instruktionerna är identiska med tidigare byggen.
 => [1/3] FROM docker.io/library/ubuntu
 => CACHED [2/3] RUN apt-get update
 => CACHED [3/3] RUN apt-get install -y python3
Introduktion till Docker

Förstå Docker-caching

Hjälper oss skriva Dockerfiles som bygger snabbare eftersom inte alla lager behöver byggas om.

I följande Dockerfile måste alla instruktioner byggas om om filen pipeline.py ändras:

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
Introduktion till Docker

Förstå Docker-caching

Hjälper oss skriva Dockerfiles som bygger snabbare eftersom inte alla lager behöver byggas om.

I följande Dockerfile behöver bara COPY-instruktionen köras om.

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
Introduktion till Docker

Nu kör vi en övning!

Introduktion till Docker

Preparing Video For Download...