安装 janusgraph chown: changing ownership Operation not permitted

最近要搞 graph 数据库, 尝试了 Neo4j 和 JanusGraph, 最后选择了 JanusGraph. 但是安装 JanusGraph 的时候, 给它添加 Volume 在启动的时候, 遇到了 chown: changing ownership of '/var/lib/janusgraph/data': Operation not permitted的错误

事故现场

简单新加持久数据和索引目录文件夹, 然后 docker 添加 volume 启动, 启动就报错了. 如下:

supra@suprabox:~/work/data$ mkdir -p /home/supra/work/data/janus/{data,index}
supra@suprabox:~/work/data$ docker run  -p 9192:8182 --rm --platform linux/amd64 -v /home/supra/work/data/janus/data:/var/lib/janusgraph/data -v /home/supra/work/data/janus/index:/var/lib/janusgraph/index janusgraph/janusgraph
chown: changing ownership of '/var/lib/janusgraph/data': Operation not permitted
chown: changing ownership of '/var/lib/janusgraph/index': Operation not permitted
waiting for storage...

检查发现 JanusGraph 的容器内使用的是 janusgraph:x:999:999::/var/lib/janusgraph:/bin/sh 这个用户, 所以只要让容器内的这个用户有权限读写就可以了.
通过以下命令找到容器内的用户:

docker ps //找到容器 id 或名称
docker top [<容器 id> | <容器名称>] //找到容器 pid, 同时能看到容器内进程使用的用户id
sudo nsenter -t <pid> -a cat /etc/passwd 

解决方法

所以如何让容器内的用户有这个文件夹的读写权限?
1) 基本host 没有这个userid:groupid, 也可以给它加权限, 把这个文件夹 chown 给 999:999 (janusgraph)
2) 把 janusgraph 用户加到可以读写的group 去
3) 把这个文件夹开放给任何用户可以读写

sudo chown -R 999:999 /home/supra/work/data/janus

其它

Linux 系统中用户id 1000 以下是保留给系统账户用的, 从1000 开始是给正常用户用的. 当然你创建用户的时候, 也可以指定任何没有用过的 userid, groupid.

标签: none

添加新评论