不允许使用Docker cp命令

Tho*_*net 6 docker

我正在尝试使用此命令将文件从容器复制到我的主机Windows机器

docker cp my_container:/folder c:\anotherfolder
Run Code Online (Sandbox Code Playgroud)

docker控制台返回

copying between containers is not supported
Run Code Online (Sandbox Code Playgroud)

为什么?

客户:版本:17.05.0-ce API版本:1.29 Go版本:go1.7.5 Git commit:89658be内置:5月5日星期五15:36:11 OS/Arch:windows/amd64

服务器:版本:17.05.0-ce API版本:1.29(最低版本1.12)转到版本:go1.7.5 Git commit:89658be内置:2017年5月4日星期三21:43:09 OS/Arch:linux/amd64实验:false

Vla*_*cak 6

我认为这是因为docker认为c是容器名称.您可以使用相对路径而不是绝对路径.

所以如果你在C:/你身边就可以:

docker cp my_container:/folder anotherfolder
Run Code Online (Sandbox Code Playgroud)

另请注意,在窗口cmd和窗口中运行命令之间几乎没有区别git bash.

1.您正在使用git bash:

或者git bash在Windows 上的控制台中逃脱:

WlaDo@DESKTOP-RBBRJOD MINGW64 ~
$ docker cp eb19fc21889c:/data c:\test
copying between containers is not supported <--- we got this error which points to implementation for which I added link below

WlaDo@DESKTOP-RBBRJOD MINGW64 ~
$ docker cp eb19fc21889c:/data c:\\test
<--- no errors here -->

WlaDo@DESKTOP-RBBRJOD MINGW64 ~
$ ls c:\\test
<--- data from container -->
Run Code Online (Sandbox Code Playgroud)

你正在使用Windows cmd

从Windows开始cmd,您应该使用的方法:

C:\Users\WlaDo>docker cp eb19fc21889c:/data c:\test
<--- no errors here -->

C:\Users\WlaDo> dir  c:\test
<--- data from container -->
Run Code Online (Sandbox Code Playgroud)

未实现容器之间的复制并引发错误.

有关docker cp的更多信息,请查看文档

冒号(:)用作CONTAINER及其路径之间的分隔符.您还可以使用:在本地计算机上指定SRC_PATH或DEST_PATH的路径时,例如file:name.txt.如果在本地计算机路径中使用:,则必须使用相对或绝对路径显式,例如:

`/ path/to/file:name.txt`或`./file:name.txt`


ejt*_*jtt 5

正如另一个答案所述,这是因为它认为c:是一个容器名称。您可以通过将路径括在引号中来解决此问题docker cp my_container:/folder "c:\anotherfolder"