Vin*_*fer 18 docker docker-compose
当我找到这个样本撰写文件时,我正在为训练设置一些材料:
https://github.com/dockersamples/example-voting-app/blob/master/docker-compose.yml
我无法在文件的第48和49行找到这个卷的装载方式:
volumes:
db-data:
Run Code Online (Sandbox Code Playgroud)
有人可以解释我在主机上这个卷的位置吗?无法找到它,我不想在容器消失后保留任何postgresql数据.类似的事情发生在网络上:
networks:
front-tier:
back-tier:
Run Code Online (Sandbox Code Playgroud)
为什么docker compose接受像这样的空网络定义?
Dan*_*owe 38
像这样的卷是Docker的内部存储并存储在Docker存储中(通常都在其下/var/lib/docker
).您可以获得卷列表:
$ docker volume ls
DRIVER VOLUME NAME
local 1c59d5b7e90e9173ca30a7fcb6b9183c3f5a37bd2505ca78ad77cf4062bd0465
local 2f13b0cec834a0250845b9dcb2bce548f7c7f35ed9cdaa7d5990bf896e952d02
local a3d54ec4582c3c7ad5a6172e1d4eed38cfb3e7d97df6d524a3edd544dc455917
local e6c389d80768356cdefd6c04f6b384057e9fe2835d6e1d3792691b887d767724
Run Code Online (Sandbox Code Playgroud)
如果要执行以下操作,可以准确找到卷在系统中的存储位置:
$ docker inspect 1c59d5b7e90e9173ca30a7fcb6b9183c3f5a37bd2505ca78ad77cf4062bd0465
[
{
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/1c59d5b7e90e9173ca30a7fcb6b9183c3f5a37bd2505ca78ad77cf4062bd0465/_data",
"Name": "1c59d5b7e90e9173ca30a7fcb6b9183c3f5a37bd2505ca78ad77cf4062bd0465",
"Options": {},
"Scope": "local"
}
]
Run Code Online (Sandbox Code Playgroud)
只要确保事物不会悬空,就可以使用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]
Run Code Online (Sandbox Code Playgroud)
当您不需要执行除定义卷或网络应存在之外的任何其他操作时,存在接受卷和网络之类的这些"空"定义的趋势.也就是说,如果你想创建它,但是使用默认设置是可以的,那么没有特别的理由来指定参数.
第一种方法
您必须查看您的卷列表:
docker volume ls
Run Code Online (Sandbox Code Playgroud)
然后运行这个命令:
sudo docker inspect <volume-name> | grep Mountpoint | awk '{ print $2 }'
Run Code Online (Sandbox Code Playgroud)
第二种方法
你可以使用这个方法:
首先运行 docker ps 来获取容器 ID,然后运行以下命令:
docker inspect --format="{{.Mounts}}" $containerID
Run Code Online (Sandbox Code Playgroud)
我们将得到卷路径。
归档时间: |
|
查看次数: |
16566 次 |
最近记录: |