请如何确定未知docker卷的容器id或映像名称例如,我可以通过运行命令'docker volume ls'找到docker卷的列表,但不幸的是,当我构建一些映像时,我没有装载特定的卷,所以我的大多数容器都是在没有卷名的情况下构建的。下面列出了一些具有未知名称的卷的示例
3199e3e4f3c2b79f04b84523959cb250223a229fca2ba16540cdbfd77762a552c1cba1883daed381d83d9940d48e5f5ceed327614c58dc4bfa3cd7a6849274ff2545f7def79e8c59dd8fc2a6d6de83876231554a738d25fe1f1f93c6b3eb9f9cce0fdd8ef8bae1e19aa41864e25f074929863a771b0ec729a119e2e880f7
请如何确定未知docker卷的容器id或映像名称
例如,我如何确定哪些卷适用于MYSQL、JENKINS和PROMETHEUS??
我的问题原因
我正试图在Grafana上启用警报,这样我就可以通过电子邮件收到通知,但我收到了这个错误消息
"对于电子邮件提醒,我收到此消息。SMTP未配置,请检查grafana.ini配置文件的[SMTP]部分">
这意味着我必须编辑安装在docker grafana卷中的grafana.ini配置文件,但我无法做到这一点。
我会感谢你的帮助。
感谢
请使用:
docker ps -a --filter volume={{reference}}
示例:
docker ps -a --filter volume=3199e3e4f3c2b79f04b84523959cb250223a229fca2ba16540cdbfd77762a552
您不需要使用Grafana卷(实际上,当前的Grafana官方图像默认情况下没有任何卷(。您可以使用env变量配置Grafana。它们具有语法GF_<grafana ini section>_<upper case properties>
。
grafama.ini
配置:
#################################### SMTP / Emailing #####################
[smtp]
enabled = true
可以通过Docker容器env变量实现:
GF_SMTP_ENABLED: true
理论上,您还可以使用卷,并将默认容器/etc/grafana/grafana.ini
文件与自己自定义的grafana.ini
一起ovewrite。
要查看哪个卷映射到哪个容器,可以尝试:
sudo docker ps -a --format '{{ .ID }}' | xargs -I {} docker inspect -f '{{ .Name }}{{ printf "n" }}{{ range .Mounts }}{{ printf "nt" }}{{ .Type }} {{ if eq .Type "bind" }}{{ .Source }}{{ end }}{{ .Name }} => {{ .Destination }}{{ end }}{{ printf "n" }}' {}
这列出了所有容器及其附加的卷。
我建议在外部托管grafana.ini文件。不一定是通过卷,而是通过文件绑定,并通过环境变量告诉grafana在哪里可以找到grafana.ini。这使您可以直接访问容器外的文件。这是docker命令的一部分。
-v /data/docker/volumes/grafana-config/grafana2.ini:/etc/grafana/grafana2.ini
-e "GF_PATHS_CONFIG=/etc/grafana/grafana2.ini"
上面的命令将显示如下内容:
/grafana
bind /data/grafana/grafana-config/grafana2.ini => /etc/grafana/grafana2.ini
volume grafana-storage => /var/lib/grafana