如何将目录复制到 docker cp?
How to copy a directory over the docker cp?
我想从主机复制一个目录到一个容器,但是我不能使用下面的命令:
$ docker cp -r <a-dir> <a-container-ID>:/destination/path
unknown shorthand flag: 'r' in -r
使用 scp -r
shell 命令我可以做到,所以我希望使用 docker cp -r
.
如何在不使用压缩 .tar
文件和提取的情况下克服它?
引用docs:
The cp
command behaves like the Unix cp -a
command in that directories are copied recursively with permissions preserved if possible.
-- 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
默认是递归的。它会将命令指向的任何内容复制到容器上的目标位置。
无需指定递归。
你可以这样复制一个目录:
docker cp /tmp/test mydocker:/tmp/test
我想从主机复制一个目录到一个容器,但是我不能使用下面的命令:
$ docker cp -r <a-dir> <a-container-ID>:/destination/path
unknown shorthand flag: 'r' in -r
使用 scp -r
shell 命令我可以做到,所以我希望使用 docker cp -r
.
如何在不使用压缩 .tar
文件和提取的情况下克服它?
引用docs:
The
cp
command behaves like the Unixcp -a
command in that directories are copied recursively with permissions preserved if possible.-- 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
默认是递归的。它会将命令指向的任何内容复制到容器上的目标位置。
无需指定递归。
你可以这样复制一个目录:
docker cp /tmp/test mydocker:/tmp/test