Správa souborů v obrazu

Introduction to Docker

Tim Sangster

Software Engineer @ DataCamp

Kopírování souborů do obrazu pomocí COPY

Instrukce COPY kopíruje soubory z lokálního počítače do sestavovaného obrazu:

COPY <src-path-on-host> <dest-path-on-image>
COPY /projects/pipeline_v3/pipeline.py /app/pipeline.py
docker build -t pipeline:v3 .
...
[4/4] COPY ./projects/pipeline_v3/pipeline.py /app/pipeline.py

Pokud cílová cesta neobsahuje název souboru, použije se původní název:

COPY /projects/pipeline_v3/pipeline.py /app/
Introduction to Docker

Kopírování složek pomocí COPY

Bez zadání názvu souboru v src-path se zkopíruje celý obsah složky.

COPY <src-folder> <dest-folder>
COPY /projects/pipeline_v3/ /app/

COPY /projects/pipeline_v3/ /app/ zkopíruje vše ve složce pipeline_v3/:

/projects/
    pipeline_v3/
        pipeline.py
        requirements.txt
        tests/
            test_pipeline.py
Introduction to Docker

Kopírování souborů z nadřazeného adresáře

/init.py
/projects/
    Dockerfile
    pipeline_v3/
        pipeline.py

Pokud je aktuální pracovní adresář ve složce projects/.

Soubor init.py nelze zkopírovat do obrazu.

docker build -t pipeline:v3 .
 => ERROR [4/4] COPY ../init.py /     0.0s
failed to compute cache key: "../init.py" not found: not found
Introduction to Docker

Stahování souborů

Soubory jsou často stahovány přímo při sestavení obrazu, nikoli kopírovány z lokálního adresáře:

  • Stažení souboru

RUN curl <file-url> -o <destination>

  • Rozbalení souboru

RUN unzip <dest-folder>/<filename>.zip

  • Odstranění původního zip souboru

RUN rm <copy_directory>/<filename>.zip

Introduction to Docker

Efektivní stahování souborů

  • Každá instrukce, která stahuje soubory, zvětšuje celkovou velikost obrazu.
  • Platí i pro soubory, které jsou později odstraněny.
  • Řešením je stažení, rozbalení a odstranění souborů v jediné instrukci.
RUN curl <file_download_url> -o <destination_directory>/<filename>.zip \
&& unzip <destination_directory>/<filename>.zip -d <unzipped-directory> \
&& rm <destination_directory>/<filename>.zip
Introduction to Docker

Shrnutí

Použití Instrukce Dockerfile
Kopírování souborů z hostitele do obrazu COPY <src-path-on-host> <dest-path-on-image>
Kopírování složky z hostitele do obrazu COPY <src-folder> <dest-folder>
Nelze kopírovat z nadřazeného adresáře, kde je Dockerfile COPY ../<file-in-parent-directory> /

Zmenšení obrazu: stažení, rozbalení a odstranění v jediné instrukci RUN:

RUN curl <file_download_url> -o <destination_directory> \
&& unzip <destination_directory>/<filename>.zip -d <unzipped-directory> \
&& rm <destination_directory>/<filename>.zip
Introduction to Docker

Pojďme procvičovat!

Introduction to Docker

Preparing Video For Download...