如果我有一个docker-compose文件,如:
version: "3"
services:
postgres:
image: postgres:9.4
volumes:
- db-data:/var/lib/db
volumes:
db-data:
...然后执行docker-compose up
为db-data
创建命名卷。有没有办法通过docker-compose
删除此卷?如果它是一个匿名卷,那么docker-compose rm -v postgres
就可以了。但就目前而言,我不知道如何在不恢复db-data
命令的情况下删除docker
卷。感觉这应该可以在docker-compose
CLI中实现。我错过了什么吗?
答案 0 :(得分:26)
docker-compose down -v
删除所有附加的卷。请参阅docs
答案 1 :(得分:1)
除了您想丢弃grafana容器的工作状态,而让其他处于分离状态的容器运行(即sudo docker-compose up -d),我遇到了与您相同的问题。这是我想出的过程:
sudo docker-compose ps
sudo docker-compose stop grafana
sudo docker-compose rm --force grafana
sudo docker volume rm metricsmonitoring_grafana_data
sudo docker-compose up --force-recreate -d grafana
我不知道(不进一步讨论)如何最好地确定要删除的Docker卷的名称。
这是在docker-compose版本1.18.0上
答案 2 :(得分:0)
无法使用docker-compose
cli来删除特定的命名卷。相反,可以使用docker
cli来实现。参见docs。
使用docker volume ls
查找特定卷的名称。
使用docker volume rm VOLUME_NAME
删除该卷。您将需要使用该卷停止并卸下容器。
答案 3 :(得分:0)
这会删除 docker-compose 中定义的所有容器、网络、卷和图像。
tasks {
jar{
from({
configurations.runtimeClasspath.get().filter { it.name.endsWith("jar") }.map { zipTree(it) }
configurations.compileClasspath.get().filter { it.name.endsWith("jar") }.map { zipTree(it) }
})
exclude ("META-INF/*.RSA", "META-INF/*.SF", "META-INF/*.DSA")
}
}
" -v " 用于所有卷
" --rmi all " 用于所有图像