从主机访问以Docker卷编写的文件

时间:2019-10-22 10:18:27

标签: docker sh docker-volume

我有一个Docker容器将日志文件写入名称卷。

我想从主机分析日志文件并搜索给定的日志消息。但是,当我访问“ docker inspect VOLUMNAME”给出的文件夹时,出现奇怪的行为,我不理解。

例如以下命令确实将空行作为输出:

user@docker-host-01:~/docker-server-env/otaya-designdb$ sudo bash -c  "for logfile in /var/lib/docker/volumes/design-db-logs/_data/*/*; do echo ${logfile}; done"





























user@docker-host-01:~/docker-server-env/otaya-designdb$

可能是什么原因?

1 个答案:

答案 0 :(得分:1)

在循环发生之前,您的本地shell正在双引号内扩展变量扩展。将双引号更改为单引号。

也就是说,当您运行

sudo bash -c "for ... ; do echo ${logfile}; done"

首先,您的本地外壳程序会用您为$logfile设置的本地环境替换变量引用,可能什么都不会

sudo bash -c 'for ...; do echo ; done'

,然后运行该命令。如果您最初将其更改为单引号

sudo bash -c 'for ... ; do echo ${logfile}; done'

它将避免这种扩展。

您只需在命令的前面加上echo一词就可以看到这一点:shell将对其进行扩展,然后echo将输出将要运行的命令。