本文是快速参考Docker cp命令的示例和用法,该命令用于将文件和目录从Docker主机复制到容器或者反向。
将目录从 Docker 主机复制到容器
就像我们使用 Docker cp 示例将文件从 Docker 主机复制到容器一样,我们也可以使用相同的命令复制完整目录。
$ sudo docker cp testdir 6b4f9e8fbfdd:/home/node
上述命令会将 testdir 目录及其内容复制到容器“6b4f9e8fbfdd”中的 /home/node 目录中。
要验证目录是否被正确复制,请在 Linux bash 提示符下执行以下命令。
$ sudo docker exec 6b4f9e8fbfdd ls /home/node/testdir test2 test3 test4
获取有关 Docker cp 命令的帮助
使用 ssh 客户端以管理员用户身份连接到 Docker 主机 (docker-01.onitroad.com)。
Docker cp 命令是一个非常简单的命令,其工作方式与 Linux cp 命令完全相同。
然而,它的语法类似于 Linux scp 命令。
我们可以通过多种方式在 Linux shell 中获得有关 Docker cp 命令的帮助。
要查看 Docker cp 的语法,我们可以使用以下命令。
$ docker cp help "docker cp" requires exactly 2 arguments. See 'docker cp --help'. Usage: docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH| docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH Copy files/folders between a container and the local filesystem
有关 Docker cp 命令、开关和参数的完整说明,我们可以查看 docker 命令的手册页。
$ man docker
docker 命令的手册页如下。
DOCKER(1) APRIL 2014 DOCKER(1) NAME docker - Docker image and container command line interface SYNOPSIS docker [OPTIONS] COMMAND [ARG...] docker [--help|-v|--version] DESCRIPTION docker is a client for interacting with the daemon (see dockerd(8)) through the CLI. The Docker CLI has over 30 commands. The commands are listed below and each has its own man page which explain usage and arguments. To see the man page for a command run man docker <command>. OPTIONS --help Print usage statement Manual page docker(1) line 1 (press h for help or q to quit)
除此之外,Docker cp 在线文档中提供了有关 Docker cp 命令和示例的高级和最新描述。
将文件从 Docker 容器复制到主机
类似地,我们可以使用相同的 Docker cp 示例将文件从容器复制到主机,但稍作改动。
$ sudo docker cp 6b4f9e8fbfdd:/etc/passwd .
上面的命令会将 /etc/passwd 文件从容器“6b4f9e8fbfdd”复制到当前目录中的 Docker 主机。
要确认文件复制,请检查复制文件的内容。
$ cat passwd
Docker cp - 使用通配符
当前版本的 Docker cp 不支持源路径和目标路径中的通配符。
作为一种解决方法,可以将所有需要的文件复制到一个目录中,然后在 Docker cp 命令的帮助下将该目录复制到/从容器中复制。
将目录从 Docker 容器复制到主机
如果我们想将完整目录(包括内容)从容器复制到主机,则同一个 Docker cp 示例的变体也很有用。
$ sudo docker cp 6b4f9e8fbfdd:/etc/profile.d .
上面的命令会将 profile.d 目录从容器“6b4f9e8fbfdd”复制到 Docker 主机的当前目录。
我们可以验证复制过程如下。
$ ls -al profile.d total 16 drwxr-xr-x 2 root root 4096 Mar 23 20:12 . drwxr-xr-x 12 jackli jackli 4096 Apr 9 21:28 .. -rw-r--r-- 1 root root 295 Nov 29 14:51 color_prompt -rw-r--r-- 1 root root 40 Nov 29 14:51 locale
将文件从 Docker 主机复制到容器
要将文件从主机复制到容器,请查看以下 Docker cp 示例。
$ sudo docker cp test1 6b4f9e8fbfdd:/home/node
其中“6b4f9e8fbfdd”是目标容器 ID。
上面的命令会将 test1 文件复制到容器“6b4f9e8fbfdd”中的 /home/node 目录中。
要检查文件是否被正确复制,我们可以在 Linux bash 提示符下执行以下命令。
$ sudo docker exec 6b4f9e8fbfdd cat /home/node/test1 test1-contents