如何从主机访问docker卷中的文件?

问题描述 投票:0回答:1

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

我想从主机分析日志文件并搜索给定的日志消息。但是当我访问“docker检查VOLUMNAME”给出的文件夹时,我得到了奇怪的行为,我不明白。

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

$ sudo bash -c  "for logfile in /var/lib/docker/volumes/design-db-logs/_data/*/*; do echo ${logfile}; done"




$

可能是什么原因?

docker sh docker-volume
1个回答
1
投票

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

也就是说,当你跑步时

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

首先,本地 shell 将变量引用替换为本地环境设置的任何内容

$logfile
,可能什么都没有

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

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

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

它将避免这种扩展。

只需将

echo
一词放在命令前面即可看到这一点:shell 将进行扩展,然后
echo
将打印出将要运行的命令。

© www.soinside.com 2019 - 2024. All rights reserved.