docker cp
コマンドを使う場合にはまりそうなポイントがあるのでメモ
詳しくはこちら
http://docs.docker.com/reference/commandline/cli/#cp
コンテナ⇒ホストへファイルコピーしてみる
/test.txt
ファイルを作成するコンテナ立ち上げる
$ docker run -i -P centos:centos7 touch /test.txt
コンテナIDを調べ、docker diff
コマンドで/test.txt
が追加されたことを確認する
http://docs.docker.com/reference/commandline/cli/#diff
$ docker ps -al
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3143f962866d centos:centos7 touch /test.txt 8 seconds ago Exited (0) 8 seconds ago hopeful_pare
$ docker diff 3143f962866d
A /test.txt
docker cp
コマンドでコンテナ内の/test.txt
をホストの/test.txt
へコピー
$ docker cp 3143f962866d:/test.txt /test.txt
正しくコピーできたかどうかを確認
$ ls -al /
....
drwxr-xr-x 2 root root 4096 10月 2 14:49 2014 test.txt
....
ん? あれ?
$ ls -al /test.txt/
-rw-r--r-- 1 root root 0 10月 2 14:48 2014 test.txt
そう、、、/test.txt
ディレクトリの中にtest.txt
がコピーされてしまうんです
ホスト側のパスはディレクトリだとはマニュアルには書いてない気がするんだけども。。。
再度、パラメータを変更しdocker cp
コマンドを実行し確認
$ docker cp 3143f962866d:/test.txt /
$ ls -al /
....
-rw-r--r-- 1 root root 0 10月 2 14:51 2014 test.txt
....
めでたく目的の場所へファイルがコピーされました。