Docker - 如何检查容器的卷路径?

时间:2015-08-28 18:00:56

标签: json docker inspect

所以从文档中,我可以查询我的容器的卷:

docker inspect --format="{{.Volumes}}" container

以格式返回路径:

map[/container/path/1:/host/path/1 /container/path/2:/host/path/2]

我的问题是,如何从这些返回的数据中提取单个路径?假设我只想要/host/path/2,所以我可以在脚本中使用它来备份该卷中的数据。

1 个答案:

答案 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范围条款中的惯例相反。