Docker:此撰写文件的Docker卷位于何处

Docker:此撰写文件的Docker卷位于何处,docker,docker-compose,Docker,Docker Compose,我正在为培训准备一些材料,这时我看到了这个示例撰写文件: 在文件的第48行和第49行,我无法找到该卷是如何装入的: volumes: db-data: 有人能解释一下主机上的这个卷在哪里吗?找不到它,我也不想在容器消失后让任何postgresql数据悬而未决。类似的事情也发生在网络上: networks: front-tier: back-tier: 为什么docker compose接受这样的空网络定义?查找卷 这样的卷是Docker内部的,存储在Docker存储中(通常都在

我正在为培训准备一些材料,这时我看到了这个示例撰写文件:

在文件的第48行和第49行,我无法找到该卷是如何装入的:

volumes:
  db-data:
有人能解释一下主机上的这个卷在哪里吗?找不到它,我也不想在容器消失后让任何postgresql数据悬而未决。类似的事情也发生在网络上:

networks:
  front-tier:
  back-tier:
为什么docker compose接受这样的空网络定义?

查找卷 这样的卷是Docker内部的,存储在Docker存储中(通常都在
/var/lib/Docker
下)。您可以获得卷的列表:

$docker卷ls
驱动程序卷名
本地1c59d5b7e90e9173ca30a7fcb6b9183c3f5a37bd2505ca78ad77cf4062bd0465
本地2f13b0cec834a0250845b9dcb2bce548f7c7f35ed9cdaa7d5990bf896e952d02
本地A3D54EC4582C3C7AD5A6172E1D4EED38CFB3E7D97DF6D524A3EDD544DC45917
本地e6c389d80768356cdefd6c04f6b384057e9fe2835d6e1d3792691b887d767724
如果您想:

$ docker inspect 1c59d5b7e90e9173ca30a7fcb6b9183c3f5a37bd2505ca78ad77cf4062bd0465
[
    {
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/1c59d5b7e90e9173ca30a7fcb6b9183c3f5a37bd2505ca78ad77cf4062bd0465/_data",
        "Name": "1c59d5b7e90e9173ca30a7fcb6b9183c3f5a37bd2505ca78ad77cf4062bd0465",
        "Options": {},
        "Scope": "local"
    }
]
清理未使用的卷 只要确保事情不会悬而未决,就可以使用prune命令,在本例中为
docker volume prune
。这将为您提供此输出,您可以选择是否继续修剪

$ docker volume prune
WARNING! This will remove all volumes not used by at least one container.
Are you sure you want to continue? [y/N]
docker-compose.yml中的“空”定义
当您除了定义卷或网络应该存在之外,不需要做任何事情时,有一种倾向是接受卷和网络之类的“空”定义。也就是说,如果您想创建它,但对默认设置没有问题,那么就没有特别的理由指定参数。

第一种方法

您必须查看您的卷列表:

docker volume ls
然后运行以下命令:

sudo docker inspect <volume-name> | grep Mountpoint | awk '{ print $2 }'

我们将获得卷路径。

Thanx用于此“prune”命令!值得注意的是,(在我的例子中)inspect实际上不会显示正确的安装位置。简单的“volume rm”也不起作用,也就是说,“volume is use”(卷正在使用)有时你只需要删减…那么有可能覆盖它并指定位置吗?@AbhijitGujar你的意思是将卷指向磁盘上容器外的目录吗?是的,稍后详细阅读文档,我认为这在卷中是不可能的,但是还有其他选项绑定,以便主机和docker都可以访问这个空间。那么“db数据”的名称去了哪里?您如何确定这些列出的卷中的哪一个实际用于名为“db data”的卷?出于好奇:这个答案添加了什么新内容?这两个调用都已经是高投票率应答器的一部分。是的,您可以在bash脚本或自动状态中使用此命令,也可以在ansible中使用此命令
docker inspect --format="{{.Mounts}}" $containerID