5

我想将目录从主机复制到容器,但我无法使用以下命令:

$ docker cp -r <a-dir> <a-container-ID>:/destination/path
unknown shorthand flag: 'r' in -r

使用scp -rshell 命令我可以做到,所以我期望与docker cp -r.

如何在不使用压缩.tar文件和提取的情况下克服它?

4

3 回答 3

7

引用文档

cp命令的行为类似于 Unixcp -a命令,因为目录被递归复制,并尽可能保留权限。

-- https://docs.docker.com/engine/reference/commandline/#extended-description

所以docker cp没有也不需要-r标志。只是省略它。像这样:

# Create a directory and put two files in it
$ mkdir testdir && touch testdir/aaa testdir/bbb

# Make sure files are there
$ ls -la testdir
total 384
drwxr-xr-x 1 jannisbaratheon 197121 0 paź 10 15:15 ./
drwxr-xr-x 1 jannisbaratheon 197121 0 paź 10 15:15 ../
-rw-r--r-- 1 jannisbaratheon 197121 0 paź 10 15:15 aaa
-rw-r--r-- 1 jannisbaratheon 197121 0 paź 10 15:15 bbb

# Create container and fetch its ID
$ export CONTAINER_ID=`docker run -di alpine:3.8 sh`

# Make sure the target directory does not exist
$ docker exec "$CONTAINER_ID" sh -c 'ls -la /containertestdir'
ls: /containertestdir: No such file or directory

# Copy the files with 'docker cp'
$ docker cp testdir "$CONTAINER_ID":/containertestdir

# Verify the files were copied by running 'ls -la' in the container
$ docker exec "$CONTAINER_ID" sh -c 'ls -la /containertestdir'
total 8
drwxr-xr-x    2 root     root          4096 Oct 10 13:15 .
drwxr-xr-x    1 root     root          4096 Oct 10 13:15 ..
-rwxr-xr-x    1 root     root             0 Oct 10 13:15 aaa
-rwxr-xr-x    1 root     root             0 Oct 10 13:15 bbb
于 2018-10-10T10:11:07.157 回答
3

默认情况下是递归的。它会将您指向的命令复制到容器上的任何目的地。

无需指定递归。

于 2018-10-10T10:11:16.683 回答
2

您可以像这样复制目录:

docker cp /tmp/test mydocker:/tmp/test
于 2018-10-10T10:12:48.050 回答