Introduktion till Docker
Tim Sangster
Software Engineer @ DataCamp
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.
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/
--> 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
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
Att förstå när lager cachelagras hjälper oss förstå varför images ibland inte ändras efter ett ombygge.
=> [1/3] FROM docker.io/library/ubuntu
=> CACHED [2/3] RUN apt-get update
=> CACHED [3/3] RUN apt-get install -y python3
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
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