Dockerコンテナからホストへのファイルのコピー

継続的インテグレーション(CI)サーバー上で依存関係を構築するのにDockerを使おうと考えています。そうすれば、すべてのランタイムとライブラリをエージェント自体にインストールする必要がなくなります。

これを実現するには、コンテナ内でビルドされた成果物をホストにコピーする必要があります。それは可能ですか?

ソリューション

コンテナからホストにファイルをコピーするためには、以下のコマンドを使用します。

docker cp :/file/path/within/container /host/path/target

以下はその例です。

$ sudo docker cp goofy_roentgen:/out_read.jpg .

ここで goofy_roentgen は、以下のコマンドで得られたコンテナ名です。

$ sudo docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                            NAMES
1b4ad9311e93        bamos/openface      "/bin/bash"         33 minutes ago      Up 33 minutes       0.0.0.0:8000->8000/tcp, 0.0.0.0:9000->9000/tcp   goofy_roentgen

また、コンテナIDを(一部)使用することもできます。次のコマンドは、最初のコマンドと同じです。

$ sudo docker cp 1b4a:/out_read.jpg .
解説 (19)

ボリューム"をマウントして、そこに成果物をコピーします。


mkdir artifacts
docker run -i -v ${PWD}/artifacts:/artifacts ubuntu:14.04 sh 
解説 (6)

ボリュームのマウント、アーティファクトのコピー、オーナーIDとグループIDの調整。

mkdir artifacts
docker run -i --rm -v ${PWD}/artifacts:/mnt/artifacts centos:6 /bin/bash  /mnt/artifacts/ls.txt
echo Changing owner from \$(id -u):\$(id -g) to $(id -u):$(id -u)
chown -R $(id -u):$(id -u) /mnt/artifacts
COMMANDS
解説 (0)