所以从文档中,我可以查询我的容器的卷:
docker inspect --format="{{.Volumes}}" container
以格式返回路径:
map[/container/path/1:/host/path/1 /container/path/2:/host/path/2]
我的问题是,如何从这些返回的数据中提取单个路径?假设我只想要/host/path/2
,所以我可以在脚本中使用它来备份该卷中的数据。
答案 0 :(得分:2)
--format
的参数是标准的go text/template表达式。如果要获取与特定容器路径对应的主机路径,可以执行以下操作:
$ docker inspect -f '{{index .Volumes "/container/path/1"}}' container
/host/path/1
如果要生成主机:容器对列表,可以这样做:
$ docker inspect -f '{{range $key, $value := .Volumes}}{{printf "%s:%s\n" $key $value}}{{end}}'
哪能得到你:
/container/path/1:/host/path/1
/container/path/2:/host/path/2
在这个例子中,我们正在利用这种语法:
动作内部的管道可以初始化变量以捕获 结果。初始化具有语法
$variable := pipeline
其中$ variable是变量的名称。声明一个的动作 变量不产生输出。
如果“范围”操作初始化变量,则变量设置为 迭代的连续元素。此外,“范围”可以声明两个 变量,用逗号分隔:
range $index, $element := pipeline
在这种情况下,$ index和$ element被设置为连续的值 数组/切片索引或映射键和元素。注意 如果只有一个变量,则为其分配元素;这是 与Go范围条款中的惯例相反。