Docker – 如何检查容器path的容器?

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

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

这将以如下格式返回path:

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

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

--format的参数是标准的去文本/模板expression式。 如果你想获得对应于特定容器path的主机path,你可以这样做:

 $ 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 

在这个例子中,我们利用了这个语法:

动作中的pipe道可以初始化一个variables来捕获结果。 初始化有语法

 $variable := pipeline 

其中$ variable是variables的名称。 声明variables的动作不产生输出。

如果一个“范围”动作初始化一个variables,variables被设置为迭代的连续元素。 此外,“范围”可以声明两个variables,用逗号分隔:

 range $index, $element := pipeline 

在这种情况下,$ index和$ element分别被设置为数组/索引或映射键和元素的连续值。 请注意,如果只有一个variables,则会分配该元素; 这与Go范围中的约定相反。