当使用来自注册中心的docker映像时,我经常需要查看映像容器创建的卷。
注意:我在Red Hat 7上使用docker 1.3.2版本。
例子
Docker Registry的postgress官方镜像有一个为容器/var/lib/postgresql/data.配置的卷
在postgres容器中显示/var/lib/postgresql/data的卷最简洁的命令是什么?
当使用来自注册中心的docker映像时,我经常需要查看映像容器创建的卷。
注意:我在Red Hat 7上使用docker 1.3.2版本。
例子
Docker Registry的postgress官方镜像有一个为容器/var/lib/postgresql/data.配置的卷
在postgres容器中显示/var/lib/postgresql/data的卷最简洁的命令是什么?
当前回答
我们可以不使用-f Go模板语法:
docker inspect <CONTAINER_ID> | jq .[].Mounts
第一个jq操作jq .[]将对象{}包装器剥离。
第二个jq操作将返回所有Mount项。
其他回答
对docker-compose用户有用的变体:
docker-compose ps -q | xargs docker container inspect \
-f '{{ range .Mounts }}{{ .Name }}:{{ .Destination }} {{ end }}'
这将非常整洁地输出可解析的音量信息。例子来自我的wordpress docker-compose:
ubuntu@core $ docker-compose ps -q | xargs docker container inspect -f '{{ range .Mounts }}{{ .Name }}:{{ .Destination }} {{ end }}'
core_wpdb:/var/lib/mysql
core_wpcode:/code core_wphtml:/var/www/html
每个容器的输出都包含一行,列出了使用的卷(和挂载点)。修改{{. name}}:{{. destination}}部分来输出你想要的信息。
如果您只想要一个简单的卷列表,则每行一个
$ docker-compose ps -q | xargs docker container inspect \
-f '{{ range .Mounts }}{{ .Name }} {{ end }}' \
| xargs -n 1 echo
core_wpdb
core_wpcode
core_wphtml
Great to generate a list of volumes to backup. I use this technique along with Blacklabelops Volumerize to backup all volumes used by all containers within a docker-compose. The docs for Volumerize don't call it out, but you don't need to use it in a persistent container or to use the built-in facilities for starting and stopping services. I prefer to leave critical operations such as backup and service control to the actual user (outside docker). My backups are triggered by the actual (non-docker) user account, and use docker-compose stop to stop services, backup all volumes in use, and finally docker-compose start to restart.
使用Type:Source:Destination格式打印挂载:
docker container inspect \
-f '{{range .Mounts}}{{.Type}}:{{.Source}}:{{.Destination}}{{println}}{{ end }}' \
<containerId>
只打印Type="volume"的mount的Source:
docker container inspect \
-f '{{range .Mounts}}{{ if eq .Type "volume" }}{{println .Source }}{{ end }}{{end}}' \
<containerId>
如果您正在使用pwsh (powershell核心),可以尝试一下
(docker ps --format='{{json .}}' | ConvertFrom-Json).Mounts
你也可以看到下面的容器名称和装载
docker ps --format='{{json .}}' | ConvertFrom-Json | select Names,Mounts
当输出被转换为json时,您可以获得它所具有的任何属性。
对于Docker 1.8,我使用:
$ docker inspect -f "{{ .Config.Volumes }}" 957d2dd1d4e8
map[/xmount/dvol.01:{}]
$
docker inspect -f '{{ json .Mounts }}' containerid | jq '.[]'