解決策:
docker
のcp
コマンドを使用することでコンテナとローカルPC間でファイルのコピーが可能です。
構文は以下の通り。
docker cp <ローカルファイルパス> <コンテナ名またはID>:<コンテナ内のディレクトリパス>
または、docker-compose
でも同様の操作が可能
docker-compose cp <サービス名>:<ローカルファイルパス> <コンテナ内のディレクトリパス>
具体例:ubuntuコンテナで実践
コンテナ内部のファイルをローカルPCにコピー
次のコマンドでubuntuを360秒間だけ立ち上げ、bashでログインします。
docker run -d --name testcopy ubuntu:14.04 sleep 360 docker exec -it testcopy bash
コンテナ内部では次のコマンドを入力して、I am in the container
と書かれたfile.txt
ファイルを作成し、exitでコンテナを抜けます。
cd /root echo 'I am in the container' > file.txt exit
ここで作成したファイルをローカルにコピーしましょう。
docker cp testcopy:/root/file.txt .
このdocker cp
コマンドでコンテナ名かコンテナIDとローカルファイルパスを指定することでコピーが可能です。
cat file.txt
実行結果
I am in the container
ローカルPCのファイルをコンテナ内部へコピー
反対に、ローカルPCのファイルをコンテナ内部へコピーする場合は先にファイル名を記述しましょう
echo 'I am in the host' > host.txt docker cp host.txt testcopy:/root/host.txt