[Docker]COPYとADDについて
はじめに
本記事では、DockerfileのCOPY
とADD
について記述します。
COPY
build context
にあるDockerfile以外のファイルをDocker imageやコンテナに持っていくことができる。
単純にファイルフォルダをコピーする場合。
COPY <ホストにあるコピーしたいファイル名> <コンテナ内にコピーしたものを入れるためのディレクトリ>
ADD
tarファイルなど圧縮ファイルをコピーして使う場合。
COPYの流れ
build context
をもとにDockerdeamon
がDockerfile
からDockerimage
を作ります。
docker buildコマンドを実行したときの、カレントなワーキングディレクトリのことを ビルドコンテキスト(build context)と呼びます。
Dockerimageを構築するには、Dockerfile
とbuild context
を渡します。
そこからDockerimageをdocker run -it ~~
をすることで、
コンテナにてDockerfileを記述することができます。
今回は、another
というファイルを一緒に起動します。
コンテナ内にもanotherを入れるために、COPY
を記述します。
FROM ubuntu:latest
↑私は、ubuntuをよく使うのでこうします。
RUN mkdir /another_dir
↑コンテナ上で、another_dirというanotherファイルを入れるためのディレクトリを作ります。
COPY another /another_dir/
↑「build context」内にあるanotherをCOPYして、コンテナ内の「another_dir」にanotherを入れます。
% docker build .
% docker run -it image名 bash
このような流れになります。
ADDの流れ
Dockerimageに移した時に、圧縮ファイルを解凍して、コンテナに渡します。
FROM ubuntu:latest
↑私は、ubuntuをよく使うのでこうします。
ADD compressed.tar /
↑tarファイルをDockerimageに移したときに解答して、コンテナに渡す。
% mkdir another_dir
ホストに「another_dir」というディレクトリを作ります。
% echo 'aaa' > aaa
「aaa」というファイルを作った上、「aaa」というテキストを入力しておきます。
% tar -cvf compressed.tar another_dir
「another_dir」を圧縮ファイルにする。ホスト上に「compressed.tar」が出来上がる
% docker build .
ここで、Dockerfileには、「ADD」の記載があるので、圧縮ファイルもimageへ。
% docker run -it image名 bash
コンテナにて解凍されたファイル「aaa」が存在でき、「another_dir」というディレクトリの中に入っている状態になる。
このような流れになります。
以上です。
終わりに
少しずつですが、インプットとアウトプットを交互にやり理解ができるようになってきました。
これも最高の講座に出会えたおかげや。。。
私の学習している動画はこちらです。(有料)
最高に分かりやすいのでオススメです。
米国AI開発者がゼロから教えるDocker講座
明日もDockerやってくぞー!
Author And Source
この問題について([Docker]COPYとADDについて), 我々は、より多くの情報をここで見つけました https://qiita.com/mkato1013/items/14749e381786c001edc4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .