Dockerコンテナのファイルコピー

1. 実行中のコンテナのコピー方法

docker cpこのコマンドを使用して、物理マシンから実行中の Docker コンテナにファイルをコピーしたり、Docker コンテナから物理マシンにファイルをコピーしたりできます。

たとえば、物理マシン上のファイルtest.txtmycontainerという名前のコンテナ/appディレクトリにコピーするには、次のコマンドを使用できます。

 
 

ファイルをホストからコンテナにコピーします。

docker cp test.txt mycontainer:/app/test.txt

ここでtest.txt、 はコピーするローカル ファイル、mycontainerはコンテナの名前、/app/test.txtはコンテナのファイル パスです。

Docker コンテナ内のファイルを物理マシンにコピーする場合は、次のコマンドを使用できます。

 
 

ファイルをコンテナからホストにコピーします。

docker cp mycontainer:/app/test.txt test.txt

このコマンドはmycontainer/app/test.txtコンテナ内のファイルをローカル ディレクトリ内のtest.txtファイルを実装します。

docker cpこのコマンドが動作するには、Docker バージョン 1.8 以降が必要であることに注意してください。さらに、コピーするファイルに対して十分な読み取りおよび書き込み権限があることを確認する必要があります。

2. dockerfileビルド時にコピー

Dockerfile では、COPYまたはADDコマンドを直接使用して、ローカル ファイルをイメージにコピーできます。原則として、Docker がイメージをビルドするとき、最初にローカル ファイルを一時ディレクトリにコピーし、次にそのディレクトリをイメージに追加します。ファイルシステム。

COPYまたはADDコマンドを使用すると、Docker ビルド エンジンは、指定されたソース パスに従ってビルド コンテキストから対応するファイルまたはディレクトリを検索し、それをイメージ内のターゲット パスにコピーします。ソース パスがディレクトリの場合、宛先パスは/で終わる。そうしないと、COPY または ADD 操作は失敗します。

たとえば、次の Dockerfile では次のようになります。

FROM nginx:latest 
COPY index.html /usr/share/nginx/html/
ADD static.tar.gz /usr/share/nginx/html/

この Dockerfile はベース イメージnginx:latestとして、index.htmlローカル ディレクトリ内のファイルをイメージ内の/usr/share/nginx/html/ディレクトリ。イメージをビルドするとき、Docker ビルド エンジンは最初に一時ディレクトリにindex.htmlコピーし、次にそのディレクトリをイメージのファイル システムに追加して、ファイルをローカルからイメージにコピーします。

したがって、 Dockerfile のCOPYまたはADDローカル ファイルをコンテナに直接コピーすることができます。さらに、これにより、イメージへのファイルのコピーも自動化されるため、新しいコンテナーを作成するときにイメージを直接使用できるようになり、ファイルを手動でコピーする必要がなくなります。

おすすめ

転載: blog.csdn.net/weixin_43391813/article/details/131308833