在我的容器中,我有一个文件夹,其中包含父亲父子文件夹的相对符号链接:
$ docker run --name symlink-test ubuntu bash -c "mkdir -p /1/2; touch /1/2/a; ln -s ../../usr /1/2; touch /1/2/z; ls -l /1/2" :(
total 4
-rw-r--r--. 1 root root 0 Mar 4 03:37 a
lrwxrwxrwx. 1 root root 9 Mar 4 03:37 usr -> ../../usr
-rw-r--r--. 1 root root 0 Mar 4 03:37 z
我想将文件夹/1
复制到主机。但是,我总是收到以下错误:
$ docker cp symlink-test:/1/2
invalid symlink "/tmp/2/usr" -> "../../usr"
$ ls 2
a
复制文件失败,docker cp
在看到符号链接后中止。
有一些与此相关的Docker错误,但它们是固定的或由不同的东西引起:
我在Fedora 23上运行Docker 1.10.2。
docker cp
的上述行为是故意还是错误?如果有意的话,背后的原因是什么?
答案 0 :(得分:0)
我不知道这种行为是否是故意的,但这是一种解决方法:
docker cp my-container:/path/to/dir - | tar -x
答案 1 :(得分:0)
您可以docker exec -it <container> sh
然后找到要复制的文件的符号链接readlink -f symlinkName
,然后docker cp
代替那个。
答案 2 :(得分:0)
就我而言,它可以通过以下方式工作:
docker cp -L container:/path/to/file.png current/directory/file.png