当前位置: 首页 > backend >正文

podman启动mongdb的container因为权限问题导致changing ownership和读取storage.bson失败的解决方法

FROM mongo:8.0.8 为基础镜像,加了些初始化数据做的mongodb镜像。用podman管理和backend,frontend组成一个简单的BS架构。利用podman创建pod,3个镜像同用一个空间,项目内部连接就可以统一用127.0.0.1加上端口进行通信了。

要使用podman,需要用podman生成镜像,和docker操作一样,在Dockerfile文件目录下面进行```

podman build --progress=plain -t <imgname>:<tag> .

创建好了后用

podman pod create --name <podnam> -p <port_host:port_container> -p <port_host:port_container> ...

创建pod,然后用之前生成的image创建并运行容器,其中,在mongodb的运行过程中

podman run  -id --rm --name <container_name> --pod <the pod name>  -v <host machine path>:/data/db  localhost/<mongo image name>:<mongo image> tag mongod --auth --bind_ip 0.0.0.0

出现了changing ownership of '/data/db..' : Operation not permitted,或者FileNotOpen, errmsg: Failed to read metadata from /data/db/storage.bson

以下是原因和方案:

  1. mongodb中Dockerfile会创建一个用户名mongodb(uid=999),创建一个用户组mongodb(gid=999)。于是挂载的宿主机目录下的db文件都归属于999
  2. 宿主机没有999这个用户。当前宿主机的用户是kiramario,uid=1000,gid=1000
  3. podman中宿主机和容器之间的命名空间有一个映射,比如kiramario用户运行podman run后,容器里面被映射为root(0)但是它不是真root,所以没有权限改归属于999的文件。
  4. 查看/etc/subuid,结果是kiramario:100000:65536,意思是映射规则是从100000开始,可以映射65536个。容器映射到主机是100000+999-1 = 100998
  5. podman unshare chown 999:999 <host machine path>,在宿主机上查看ls -l发现文件归属是100998,对上了,就有权限了。
http://www.xdnf.cn/news/18819.html

相关文章:

  • CMake构建学习笔记20-iconv库的构建
  • 算法概述篇
  • 游戏空间划分技术
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(20):文法+单词第7回2
  • 广告推荐模型1:逻辑回归(Logistic Regression,LR)
  • 如何拯救一家濒临破产的科技公司?
  • 技术总结:AArch64架构下Jenkins Agent(RPM容器编译节点)掉线问题分析与排查
  • KubeBlocks for Oracle 容器化之路
  • 【RAGFlow代码详解-30】构建系统和 CI/CD
  • 微服务-28.配置管理-共享配置
  • poi生成word固定表格列宽
  • TensorFlow 面试题及详细答案 120道(61-70)-- 高级特性与工具
  • css3背景线性渐变:linear-gradient
  • 【密集目标检测】停车场车辆(车位)识别数据集:12k+图像,yolo标注
  • 04 网络信息内容安全--入侵检测技术
  • 依托边缘计算方案,移动云全面化解算力、效率、安全平衡难题
  • from中烟科技翼支付 面试题2
  • 高频面试题:说一下线程池吧?(线程池原理,核心参数,创建方式,应用场景都要说到才能让面试官心服口服)
  • Pytorch深度学习(小土堆)
  • Java 企业应用单点登录(SSO)实现方案详解
  • 如何对springboot mapper 编写单元测试
  • Ansible 文件管理与 Jinja2 模板全解析:从模块应用到动态配置生成
  • 由倍讯科技研制的CCLinkIE转ModbusTCP网关,可达成与脉冲计数器的连接
  • JVM分层编译深度解析:完整机制与实践指南
  • 《零基础入门AI:长短期记忆网络(LSTM)与门控循环单元(GRU)(原理、结构与实现)》
  • 【大前端】实现一个前端埋点SDK,并封装成NPM包
  • 【机械故障】旋转机械故障引起的振动信号调制效应概述
  • 在线教育系统源码助力教培转型:知识付费平台开发的商业实践
  • 达索 Enovia 许可管理技术白皮书:机制解析与智能优化实践
  • 面试 总结(1)