首页 > 解决方案 > 错误:没有这样的容器:路径:尝试在 shell 脚本中使用 cp 时

问题描述

我有一个脚本,它在 docker 容器中创建一个目录并将文件从主机复制到新目录。

# $wpc is a variable holding the container name
#make the directory in the container
docker exec $wpc bash -c "mkdir -p /root/.ssh"
#stop container 
docker stop $wpc
#copy file to container
docker cp  ~/.ssh/id_rsa $wpc:/root/.ssh/id_rsa
# wait until the wordpress container is running 
docker start $wpc

但我收到此错误:

Error: No such container:path: <container_name>:\root\.ssh

语法错了吗?我尝试在复制文件之前更改文件夹的权限,但没有成功。

我在 windows server 2019 和我的 Docker 信息上运行 docker:

Client: Docker Engine - Enterprise
 Version:           19.03.5
 API version:       1.40
 Go version:        go1.12.12
 Git commit:        2ee0c57608
 Built:             11/13/2019 08:00:16
 OS/Arch:           windows/amd64
 Experimental:      true

Server: Docker Engine - Enterprise
 Engine:
  Version:          19.03.5
  API version:      1.40 (minimum version 1.24)
  Go version:       go1.12.12
  Git commit:       2ee0c57608
  Built:            11/13/2019 07:58:51
  OS/Arch:          windows/amd64
  Experimental:     true

任何帮助或信息表示赞赏。

标签: bashgitdockersh

解决方案


好的,这并不能完全回答问题,但这是我\在错误消息中看到字符的唯一问题,而且我整个上午都在与这个问题作斗争。

我找到了解决此问题的一种方法。而不是使用这样的循环:

foreach ($file in Get-ChildItem libfoo*) {
  docker cp $file mycontainer:/usr/local/lib
}

我把我要复制的所有文件放到一个目录中,并复制了该目录:

mkdir libs
mv libfoo* libs
docker cp .\libs mycontainer:/usr/local/lib

除非目标目录是/.


推荐阅读