在使用docker的过程中碰到如下问题:目的:复制容器内某一后缀的文件到宿主机上,例如从pg容器中复制以.log结尾的文件到宿主机上尝试过程:
1. 进入pg容器发现在/opt/configure/目录下存在文件configure.log
docker cp pg:/opt/configure/configure.log2. 使用常规命令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.logError 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} ./
执行成功想询问一下,脚本执行不成功的问题出在了那里。