Docker:这个撰写文件的docker卷位于何处

时间:2017-07-24 01:27:36

标签: docker docker-compose

当我找到这个样本撰写文件时,我正在为训练设置一些材料:

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接受像这样的空网络定义?

2 个答案:

答案 0 :(得分:22)

查找卷

这样的卷是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 中的

“空”定义

当您不需要执行除定义卷或网络应存在之外的任何操作时,存在接受卷和网络之类的“空”定义的倾向。也就是说,如果你想创建它,但是没有使用默认设置,那么没有特别的理由来指定参数。

答案 1 :(得分:0)

第一种方法

您必须查看您的音量列表:

docker volume ls

然后运行此命令:

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

第二种方法

您可以使用此方法:

首先运行docker ps以获取您的容器ID,然后运行此命令:

docker inspect --format="{{.Mounts}}" $containerID

我们将获得音量路径。