Introduction to Docker
Tim Sangster
Software Engineer @ DataCamp
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.
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/
--> 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
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
Pochopení toho, kdy jsou vrstvy cachovány, pomáhá vysvětlit, proč se imagi někdy po opětovném sestavení nezmění.
=> [1/3] FROM docker.io/library/ubuntu
=> CACHED [2/3] RUN apt-get update
=> CACHED [3/3] RUN apt-get install -y python3
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
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