小编典典

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

docker

当我涉及此示例撰写文件时,我正在设置一些培训材料:

https://github.com/dockersamples/example-voting-app/blob/master/docker-
compose.yml

而且我找不到文件的第48和49行上如何安装该卷:

volumes:
  db-data:

有人可以向我解释主机上的该卷在哪里吗?找不到它,我不希望在容器消失后保持任何postgresql数据悬挂。网络发生了类似的事情:

networks:
  front-tier:
  back-tier:

为什么docker compose会接受这样的空网络定义?


阅读 359

收藏
2020-06-17

共1个答案

小编典典

查找卷

此类卷在Docker内部,并存储在Docker存储区(通常位于/var/lib/docker)下。您可以获取卷列表:

$ docker volume ls
DRIVER              VOLUME NAME
local               1c59d5b7e90e9173ca30a7fcb6b9183c3f5a37bd2505ca78ad77cf4062bd0465
local               2f13b0cec834a0250845b9dcb2bce548f7c7f35ed9cdaa7d5990bf896e952d02
local               a3d54ec4582c3c7ad5a6172e1d4eed38cfb3e7d97df6d524a3edd544dc455917
local               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中的“空”定义

当您除了定义卷或网络应该存在之外不需要执行任何其他操作时,就有一种倾向接受诸如卷和网络之类的这些“空”定义。也就是说,如果要创建它,但可以使用默认设置,则没有特别的理由指定参数。

2020-06-17