Introductie tot Docker
Tim Sangster
Software Engineer @ DataCamp
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.
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/
--> 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
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
Weten wanneer lagen gecachet zijn helpt te snappen waarom images soms niet veranderen na een rebuild.
=> [1/3] FROM docker.io/library/ubuntu
=> CACHED [2/3] RUN apt-get update
=> CACHED [3/3] RUN apt-get install -y python3
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
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