Úvod do Docker cachování

Introduction to Docker

Tim Sangster

Software Engineer @ DataCamp

Docker build

Stažení a rozbalení souboru pomocí Docker instrukcí.

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

Změní souborový systém a přidá:

/example_folder.zip
/example_folder/
    example_file1
    example_file2

Právě tyto změny jsou uloženy v imagi.

Introduction to Docker

Docker instrukce jsou spojeny se změnami souborového systému

Každá instrukce v Dockerfile je spojena se změnami, které provedla v souborovém systému imagi.

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/
Introduction to Docker

Docker vrstvy

  • Docker vrstva: Všechny změny způsobené jednou instrukcí Dockerfile.
  • Docker image: Všechny vrstvy vytvořené během sestavení

--> Docker image: Všechny změny souborového systému způsobené všemi instrukcemi Dockerfile.

Při sestavování Dockerfile Docker zobrazuje, na které vrstvě pracuje:

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

Docker cachování

Opakovaná sestavení jsou výrazně rychlejší, protože Docker znovu používá nezměněné vrstvy.

Opakované sestavení:

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

Opakované sestavení se změnami:

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

Principy Docker cachování

Pochopení toho, kdy jsou vrstvy cachovány, pomáhá vysvětlit, proč se imagi někdy po opětovném sestavení nezmění.

  • Docker nemůže vědět, kdy je vydána nová verze python3.
  • Docker použije cachované vrstvy, protože instrukce jsou totožné s předchozími sestaveními.
 => [1/3] FROM docker.io/library/ubuntu
 => CACHED [2/3] RUN apt-get update
 => CACHED [3/3] RUN apt-get install -y python3
Introduction to Docker

Principy Docker cachování

Pomáhá psát Dockerfiles, které se sestavují rychleji, protože ne všechny vrstvy je nutné znovu sestavit.

V následujícím Dockerfile je nutné znovu sestavit všechny instrukce, pokud se změní soubor 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
Introduction to Docker

Principy Docker cachování

Pomáhá psát Dockerfiles, které se sestavují rychleji, protože ne všechny vrstvy je nutné znovu sestavit.

V následujícím Dockerfile bude nutné znovu spustit pouze instrukci 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
Introduction to Docker

Pojďme procvičovat!

Introduction to Docker

Preparing Video For Download...