search
LoginSignup
40
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

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

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
....

めでたく目的の場所へファイルがコピーされました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
40
Help us understand the problem. What are the problem?