docker cp命令中使用变量导致错误问题

「已注销」 2018-11-15 05:51:12
在使用docker的过程中碰到如下问题:

目的:复制容器内某一后缀的文件到宿主机上,例如从pg容器中复制以.log结尾的文件到宿主机上

尝试过程:
1. 进入pg容器发现在/opt/configure/目录下存在文件configure.log


docker cp pg:/opt/configure/configure.log

2. 使用常规命令docker cp pg:/opt/configure/configure.log ./ 拷贝容器中的configure.log到宿主机的当前目录下。执行成功

3.使用通配符执行命令docker cp pg:/opt/configure/*.log ./ 拷贝容器中的configure.log到宿主机的当前目录下。执行失败,推测docker cp命令不支持通配符使用,待确认。

4.使用脚本来达到复制容器内某一后缀的文件到宿主机上的目的。
脚本简化后如下所示:



#! /bin/bash

string=$( docker exec -it pg /bin/bash -c "ls /opt/configure/*.log" )
echo ${string}
docker cp pg:${string} ./



脚本执行结果如下:

/opt/configure/configure.log

Error response from daemon: lstat /var/lib/docker/devicemapper/mnt/b102410508124b7149b441c47438337b53910c40751f9a9a578df8b91e7cc4d5/rootfs/opt/configure/configure: no such file or directory

第一句打印执行的是echo ${string},证明变量中的值正确。之后的docker cp命令执行失败。

如果直接在命令行里执行如下两句
string="/opt/configure/configure.log"
docker cp pg:${string} ./
执行成功

想询问一下,脚本执行不成功的问题出在了那里。
...全文
964 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mouse_zhu 2018-12-17
  • 打赏
  • 举报
回复
你把脚本中
echo ${string} 改为
echo ${string} >> file
然后打开file 你就发现问题了
mouse_zhu 2018-12-17
  • 打赏
  • 举报
回复
/bin/wc 是我测试用的
mouse_zhu 2018-12-17
  • 打赏
  • 举报
回复
你echo 出来的东西是不是是绿色的文字。如果你输出详细的话 应该是
''$'\033''[1;32m/bin/wc'$'\033''[m'$'\r' 这样的,把Vt码去掉就可以了。
「已注销」 2018-11-23
  • 打赏
  • 举报
回复
目录挂载的方式是可以的。但所有目标容器文件挂载到宿主机上有些复杂。
aabbabababaa 2018-11-17
  • 打赏
  • 举报
回复
没用过这样复制,都是用的挂载目录。。。

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧