如何配置Docker Compose避免执行down时删除数据卷?
如何避免
docker compose down误删数据卷? 当然可以通过配置docker-compose.yml来避免这个问题,核心思路是让数据卷脱离docker compose down的默认清理范围,具体有两种常用方式:
显式定义命名数据卷
docker compose down默认只会删除那些未命名、由compose自动创建的数据卷。如果在配置里显式给数据卷命名,down操作就不会动它。示例配置:version: '3.8' services: db: image: mysql:8.0 volumes: - mysql_data:/var/lib/mysql # 引用下面定义的命名卷 volumes: mysql_data: # 显式声明命名数据卷这样执行
docker compose down后,mysql_data卷会被保留,只有加上-v参数才会删除它。使用外部数据卷
如果数据卷是你预先用docker volume create命令手动创建的,只要在compose里标记它为外部卷,down操作也不会删除。示例配置:version: '3.8' services: db: image: mysql:8.0 volumes: - external_mysql_data:/var/lib/mysql volumes: external_mysql_data: external: true # 标记为外部已存在的卷
补充说明:docker compose down的默认清理规则是:删除服务容器、compose创建的网络,以及未命名的自动生成数据卷。只要把需要保护的数据卷显式命名或设为外部,就能避免误操作导致的数据丢失。
内容的提问来源于stack exchange,提问作者stwissel
相关产品推荐
相关产品推荐

