イメージ内のファイルの管理

Docker の紹介

Tim Sangster

Software Engineer @ DataCamp

イメージへのファイルのコピー

COPY命令は、ローカルマシン上のファイルを、作成中のイメージにコピーします。

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

宛先パスにファイル名がない場合、元のファイル名が使用されます:

COPY /projects/pipeline_v3/pipeline.py /app/
Docker の紹介

フォルダーのコピー

src-path にファイル名を指定しないと、ファイルの内容がすべてコピーされます。

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

COPY /projects/pipeline_v3/ /app/pipeline_v3/ 配下のすべてをコピーします:

/projects/
    pipeline_v3/
        pipeline.py
        requirements.txt
        tests/
            test_pipeline.py
Docker の紹介

親ディレクトリからのファイルのコピー

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

現在の作業ディレクトリがprojects/フォルダにある場合。

init.py を画像にコピーすることはできません。

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

ファイルのダウンロード

ローカルディレクトリからファイルをコピーする代わりに、イメージビルド中にファイルがダウンロードされることがよくあります。

  • ファイルのダウンロード

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

  • ファイルの解凍

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

  • 元のzipファイルの削除

RUN rm <copy_directory>/<filename>.zip

Docker の紹介

ファイルの効率的なダウンロード

  • ファイルをダウンロードする各指示は、イメージの合計サイズに加算されます。
  • たとえファイルが後で削除されても。
  • 解決策は、1つの指示でファイルをダウンロード、展開し、削除することです。
RUN curl <file_download_url> -o <destination_directory>/<filename>.zip \
&& unzip <destination_directory>/<filename>.zip -d <unzipped-directory> \
&& rm <destination_directory>/<filename>.zip
Docker の紹介

概要

使用法 Dockerfile 命令
ホストからイメージへファイルをコピーする COPY <src-path-on-host> <dest-path-on-image>
ホストからイメージへフォルダーをコピーする COPY <src-folder> <dest-folder>

Dockerfile をビルドする際、親ディレクトリからはコピーできません | COPY ../<file-in-parent-directory> /|

画像を小さく保つには、ダウンロード、解凍、クリーンアップを1つのRUN命令で行ってください:

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

練習しましょう!

Docker の紹介

Preparing Video For Download...