如何清除Docker中NocoDB的所有数据以实现干净重启?
解决NocoDB Docker容器重置数据的问题
问题原因
你执行的docker run命令里,通过-v "$(pwd)"/nocodb:/usr/app/data/把本地当前目录的nocodb文件夹和容器内的NocoDB数据目录做了绑定挂载。SQLite的数据库文件就存在这个本地文件夹里,所以即使你删除容器、清理Docker卷,本地的这个文件夹依然保留着之前的测试数据,新容器启动后会自动读取这里的数据,导致无法从零开始。
解决方案
方案1:手动清理本地挂载目录(适合需要保留挂载方式的场景)
每次需要重置数据时,在停止并删除容器后,删除本地的nocodb文件夹:
# 停止并删除容器 docker stop nocodb docker rm nocodb # 删除本地挂载的文件夹 rm -rf "$(pwd)"/nocodb # 重新启动容器,此时会创建新的空文件夹,数据从零开始 docker run -d --name nocodb \ -v "$(pwd)"/nocodb:/usr/app/data/ \ -p 8080:8080 \ nocodb/nocodb:latest
方案2:使用Docker临时卷(无需手动清理,适合纯测试场景)
如果只是测试用,不需要持久化数据,可以去掉本地挂载的参数,改用Docker的临时卷(容器删除时卷自动销毁):
# 停止并删除现有容器 docker stop nocodb docker rm nocodb # 启动新容器,不指定本地挂载,Docker会自动创建临时卷 docker run -d --name nocodb \ -p 8080:8080 \ nocodb/nocodb:latest
这样每次删除容器后,关联的临时卷会被自动清理,新启动的容器就是完全干净的状态。
补充:彻底清理残留数据
如果你之前做了各种操作后还有残留,可以执行以下命令确保彻底清理:
# 停止所有NocoDB容器 docker stop $(docker ps -q --filter "name=nocodb") # 删除所有NocoDB容器 docker rm $(docker ps -aq --filter "name=nocodb") # 删除本地的挂载文件夹(如果用了方案1的挂载) rm -rf "$(pwd)"/nocodb # 清理Docker无用资源(可选) docker system prune -f
内容的提问来源于stack exchange,提问作者Sam Leurs
相关产品推荐
相关产品推荐

