docker compose 配置卷映射方式
docker compose里两种方式配置卷映射进行数据持久化
宿主机路径:容器路径
version: '3'
services:
solr:
image: solr
ports:
- "8983:8983"
volumes:
- /opt/solr/data:/var/solr
优点:直观清晰
缺点:需要管理本地路径(本地路径需要存在);可以直接删除存在一定的风险
卷标
示例1:
services:
backend:
image: example/database
volumes:
- db-data:/etc/data
backup:
image: backup-service
volumes:
- db-data:/var/lib/backup/data
volumes:
db-data:
示例2:
services:
backend:
image: example/database
volumes:
- db-data:/etc/data
backup:
image: backup-service
volumes:
- db-data:/var/lib/backup/data
volumes:
db-data:
driver: local
driver_opts:
type: "nfs"
o: "addr=10.40.0.199,nolock,soft,rw"
#这里也可以直接指定本地路径 这种使用docker volume rm 来删除也仅能删除卷无法删除本地路径
device: /docker/db-data
优点:可以通过docker volume 进行管理
下面说明如何查看docker卷标具体挂载在那个位置以及删除
# 列出所有卷标 并过滤出包含solr名称的
[root@VM-8-14-centos logs]# docker volume ls | grep solr
local solr_data
# 检查指定卷标名称的信息
[root@VM-8-14-centos logs]# docker volume inspect solr_data
[
{
"CreatedAt": "2024-01-09T16:40:58+08:00",
"Driver": "local",
"Labels": {
"com.docker.compose.project": "solr",
"com.docker.compose.version": "2.21.0",
"com.docker.compose.volume": "data"
},
"Mountpoint": "/var/lib/docker/volumes/solr_data/_data",
"Name": "solr_data",
"Options": null,
"Scope": "local"
}
]
# 可以看到挂载点为/var/lib/docker/volumes/solr_data/_data
# 删除本地指定卷标 无法删除正在使用的
[root@VM-8-14-centos logs]# docker volume rm solr_data
Error response from daemon: remove solr_data: volume is in use - [eadc2932f95109bf59d99b2559c127279f60b51cef01df5b72047814642237f7]
[root@VM-8-14-centos logs]# docker volume rm solr_data
[root@VM-8-14-centos logs]# docker inspect eadc2932f95109bf59d99b2559c127279f60b51cef01df5b72047814642237f7
[root@VM-8-14-centos logs]# docker compose down
# 列出所有无效的卷标
docker volume ls -qf dangling=true
# 删除无效的卷
docker volume rm $(docker volume ls -qf dangling=true)
# docker volume prune 同上
评论区