Docker部署SQLite3容器无法创建/读取数据库文件求助
问题原因与解决方案
核心结论
SQLite完全适配Docker环境,你的问题是容器运行用户与宿主机挂载目录的权限不兼容,和静态启动Docker的方式无关。
问题根源
keinos/sqlite3:latest镜像默认使用非root用户(通常是UID=1000的普通用户)运行SQLite进程。当你挂载宿主机目录到容器内后,容器内的非root用户没有权限读写宿主机目录下的文件/创建新文件——即使你把宿主机目录权限改成777,也可能因为Linux权限安全机制(比如挂载目录的父目录权限、用户UID/GID不匹配)导致无法正常操作。
解决方案
方案1:以root用户运行容器(最快捷)
直接在docker run命令中添加--user root参数,让容器内的SQLite进程以root身份运行,拥有读写挂载目录的完全权限:
docker run --rm -it -v "$(pwd):/workspace" -w /workspace --user root keinos/sqlite3
进入交互环境后执行.open ./sample.db即可正常创建或读写数据库。
方案2:对齐宿主机与容器的用户UID/GID
- 先查看容器内运行用户的UID:
docker run --rm keinos/sqlite3 id -u
- 将宿主机当前目录的所有者改成对应UID(假设输出为1000):
sudo chown -R 1000:1000 ./
- 再执行原来的
docker run命令即可正常操作数据库。
额外提示
如果是实验室公共机器,方案1更适合(无需修改宿主机目录权限,避免影响其他用户),方案2需要你有sudo权限修改目录所有者。
内容的提问来源于stack exchange,提问作者PuppyCat
相关产品推荐
相关产品推荐

