在使用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} ./
执行成功想询问一下,脚本执行不成功的问题出在了那里。
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} ./
执行成功想询问一下,脚本执行不成功的问题出在了那里。
解决方案 »
- linux下find命令查找文件诡异事件
- arm-linux-gcc4.3.2编译linux4.18.7出错
- 请教两台Linux服务器如何通过HBA卡发送文件?
- linux自动挂载根目录问题
- 求助 日志服务器收不到日志
- CentOS安装好mysql后启动就报 Input/output error
- 由于误操作,在web管理后台把iredmail管理员postmaster禁用掉了,如何恢复启用状态?
- 用U盘裸机安装ubuntu显示安装成功后,重启出现Error 1962 找不到操作系统
- 新加LVM挂到了根目录,而且VGNAME和根目录取了一样的名字,怎么安全卸载?
- centos7 安装gcc 出现问题
- squid正向代理,实在没招了,有偿帮忙解决此问题
- 使用OpenSSL API解密失败
''$'\033''[1;32m/bin/wc'$'\033''[m'$'\r' 这样的,把Vt码去掉就可以了。
echo ${string} 改为
echo ${string} >> file
然后打开file 你就发现问题了