ホームページ >運用・保守 >Docker >Docker のコピー命令と追加命令の違いは何ですか

Docker のコピー命令と追加命令の違いは何ですか

青灯夜游
青灯夜游オリジナル
2021-11-29 16:57:0723842ブラウズ

違い: COPY 命令は、リモート URL からのリソースの取得をサポートしていません。これは、docker build が実行されるホストからリソースを読み取り、イメージにコピーすることしかできませんが、ADD 命令は、リモート URL からのリソースの取得をサポートしています。これは URL から取得できます。リモート サーバーからリソースを読み取り、イメージにコピーします。

Docker のコピー命令と追加命令の違いは何ですか

このチュートリアルの動作環境: linux5.9.8 システム、docker-1.13.1 バージョン、Dell G3 コンピューター。

Dockerfile の COPY 命令と ADD 命令は両方とも、ホスト上のリソースをコンテナー イメージにコピーまたは追加できます。どちらもイメージのビルド プロセス中に完了します。

DockerFile の ADD と COPY の違い

COPY 命令と ADD 命令の唯一の違いは、次のとおりです。リモート URL リソースからの取得をサポートします。

COPY 命令は、docker build が実行されるホストからリソースを読み取り、イメージにコピーすることしかできません。 ADD 命令は、URL を介してリモート サーバーからリソースを読み取り、それらをイメージにコピーすることもサポートします。

同じ要件の場合、COPY 命令を使用することをお勧めします。 ADD 命令は、ローカル tar ファイルの読み取りと解凍に優れています。

ADD および COPY 命令

COPY は ADD と同じ構文を持ち、ファイルをコピーします。

ADD

新しいファイル、ディレクトリ、またはリモート ファイルの URL cbce1a3cf2f839037583dce8e845670b をコピーし、6be58d1426a577c69ada50a4bc87dd69 に追加します。

cbce1a3cf2f839037583dce8e845670b複数のリソースを指定できますが、それらがファイルまたはディレクトリの場合、そのパスはビルド コンテキストのソース (_WORKDIR_) を基準にして解釈されます。

各 cbce1a3cf2f839037583dce8e845670b にはワイルドカードを含めることができ、照合には Go の filepath.Match ルールが使用されます。例:

「hom」で始まるすべてのファイルを追加します:

ADD hom* /mydir/

以下の例では、? は「home.txt」などの任意の 1 文字に置き換えられます。

ADD hom?.txt /mydir/

6be58d1426a577c69ada50a4bc87dd69 は絶対パス、または WORKDIR を基準とした相対パスです。

ADD 命令には次の利点があります:

  • 1. ソース パスがファイルで、ターゲット パスが / で終わる場合、dockerターゲット パスはディレクトリとして扱われ、ソース ファイルがそのディレクトリにコピーされます。
    ターゲット パスが存在しない場合、ターゲット パスは自動的に作成されます。

  • 2. ソース パスがファイルで、ターゲット パスが / で終わっていない場合、docker はターゲット パスをファイルとして扱います。
    ターゲット パスが存在しない場合は、ターゲット パスの名前でファイルが作成され、コンテンツは同じソース ファイルからのものになります。
    ターゲット ファイルが既存のファイルの場合は、ソースファイルに上書きされます もちろん内容のみが上書きされ、ファイル名は同じになります ターゲットファイル名。
    ターゲット ファイルが実際に既存のディレクトリである場合、ソース ファイルはそのディレクトリにコピーされます。この場合、混乱を避けるために、表示を / で終了することが最善であることに注意してください。

  • 3. ソース パスがディレクトリで、ターゲット パスが存在しない場合、docker はターゲット パスを使用してディレクトリを自動的に作成し、ソース パス ディレクトリにファイルをコピーします。
    ターゲット パスが既存のディレクトリの場合、docker はソース パス ディレクトリ内のファイルをそのディレクトリにコピーします。

  • 4. ソースファイルがアーカイブファイル(圧縮ファイル)の場合、docker が自動的に解凍します。

上記の利点は、ADD の欠点でもあります。

推奨される学習: 「docker ビデオ チュートリアル

以上がDocker のコピー命令と追加命令の違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。