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范围中的约定相反。