Docker 容器 CP
| 描述 | 在容器和本地文件系统之间复制文件/文件夹 |
|---|---|
| 用法 | docker container cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH |
| 别名 | docker cp |
描述
这docker cp实用程序会将SRC_PATH到DEST_PATH.
您可以从容器的文件系统复制到本地计算机或
反向,从本地文件系统到容器。如果为
要么是-SRC_PATH或DEST_PATH,您还可以从STDIN或STDOUT.这CONTAINER可以是正在运行或已停止的容器。
这SRC_PATH或DEST_PATH可以是文件或目录。
这docker cp命令假定容器路径是相对于容器的 (根) 目录的。这意味着提供初始正斜杠是可选的;
命令会看到/compassionate_darwin:/tmp/foo/myfile.txt和compassionate_darwin:tmp/foo/myfile.txt相同。本地计算机路径可以
是绝对值或相对值。该命令将解释本地计算机的
relative paths 作为相对于当前工作目录的docker cp是
跑。
这cp命令的行为类似于 Unixcp -a命令在
递归复制,并尽可能保留权限。所有权设置为
目标的用户和主组。例如,复制到
容器是使用UID:GIDroot 用户的 root 用户。将文件复制到本地
machine 是使用UID:GID调用了docker cp命令。但是,如果指定-a选择docker cp设置所有权
到源中的用户和主组。
如果指定-L选择docker cp遵循任何符号链接
在SRC_PATH.docker cp不为DEST_PATH如果它们不存在。
假设路径分隔符为 ,第一个参数为/SRC_PATH和第二个
的参数DEST_PATH,行为如下:
SRC_PATH指定文件DEST_PATH不存在- 文件将保存到在
DEST_PATH
- 文件将保存到在
DEST_PATH不存在且以/- 错误条件:目标目录必须存在。
DEST_PATH存在且是一个文件- 目标将被源文件的内容覆盖
DEST_PATH存在,并且是一个目录- 该文件将使用 basename 从
SRC_PATH
- 该文件将使用 basename 从
SRC_PATH指定目录DEST_PATH不存在DEST_PATH创建为目录,源的内容 目录复制到此目录中
DEST_PATH存在且是一个文件- 错误条件:无法将目录复制到文件
DEST_PATH存在,并且是一个目录SRC_PATH不以/.(即:斜杠后跟点)- 源目录将复制到此目录中
SRC_PATH结尾为/.(即:斜杠后跟点)- 源目录的内容将复制到此 目录
该命令需要SRC_PATH和DEST_PATH根据上述内容存在
规则。如果SRC_PATH是本地的,并且是符号链接,则符号链接不是
默认情况下,将复制目标。要复制链接目标而不是链接,请指定
这-L选择。
冒号 (:) 用作CONTAINER及其路径。您可以
也使用:当指定SRC_PATH或DEST_PATH在本地
machine 等file:name.txt.如果您使用:在本地计算机路径中,
您必须明确使用相对或绝对路径,例如:
`/path/to/file:name.txt` or `./file:name.txt`
选项
| 选择 | 违约 | 描述 |
|---|---|---|
-a, --archive | 存档模式(复制所有 uid/gid 信息) | |
-L, --follow-link | 始终遵循 SRC_PATH 中的元件链接 | |
-q, --quiet | 在复制期间禁止显示进度输出。如果未连接端子,则会自动抑制进度输出 |
例子
将本地文件复制到容器中
$ docker cp ./some_file CONTAINER:/work
将文件从容器复制到本地路径
$ docker cp CONTAINER:/var/logs/ /tmp/app_logs
将文件从容器复制到 stdout。注意cp命令生成 tar 流
$ docker cp CONTAINER:/var/logs/app.log - | tar x -O | grep "ERROR"
极端情况
无法复制某些系统文件,例如/proc,/sys,/dev、tmpfs 和 mounts 创建的
容器中的用户。但是,您仍然可以手动复制此类文件
运行tar在docker exec.以下两个示例执行相同的作
以不同的方式(考虑SRC_PATH和DEST_PATH是目录):
$ docker exec CONTAINER tar Ccf $(dirname SRC_PATH) - $(basename SRC_PATH) | tar Cxf DEST_PATH -
$ tar Ccf $(dirname SRC_PATH) - $(basename SRC_PATH) | docker exec -i CONTAINER tar Cxf DEST_PATH -
用作-SRC_PATH流式传输STDIN作为 tar 存档。
该命令将 tar 的内容提取到DEST_PATH在容器的
文件系统。在这种情况下,DEST_PATH必须指定一个目录。使用 as
这-DEST_PATH将资源的内容作为 tar 存档流式传输到STDOUT.