1. 実行中のコンテナのコピー方法
docker cp
このコマンドを使用して、物理マシンから実行中の Docker コンテナにファイルをコピーしたり、Docker コンテナから物理マシンにファイルをコピーしたりできます。
たとえば、物理マシン上のファイルtest.txt
をmycontainer
という名前のコンテナ/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
ローカル ファイルをコンテナに直接コピーすることができます。さらに、これにより、イメージへのファイルのコピーも自動化されるため、新しいコンテナーを作成するときにイメージを直接使用できるようになり、ファイルを手動でコピーする必要がなくなります。