← 返回资讯

想把网关容器根目录设为只读,怎样先找全必须写入的路径

2026-10-24

给容器设置只读根文件系统之前,应先知道程序必须写哪些路径。数据库、临时文件、日志与程序目录承担不同职责,不能一遇到写入失败就把整个根目录重新放开。本文交付路径权限契约和Compose片段,当前只做静态检查,未运行容器写入探针。

按用途列出预期读写矩阵

附件把/app/bin视为程序目录,应不可写;/data/state是持久数据卷,应可写;/tmp/work是临时空间,应可写;stdout作为输出流也可写。参考结果三项允许、一项根路径拒绝。这里的路径是自建假服务约定,不是断言某个New API镜像实际使用这些位置。

只读根不会自动替你选择正确的数据目录。应从目标版本文档、配置和镜像入口核对程序真实写入点,包括启动生成文件、缓存和运行期临时文件。日志若写文件,需要独立可写位置;输出到stdout则由容器日志驱动处理,不能把stdout当成普通根目录文件路径挂载。

在独立假服务里验证允许与拒绝

完整实验应先启动只做路径写入的假服务,在根、数据卷和tmpfs各写一份合成标记,然后保存成功或具体错误。程序目录必须有一个失败负例,否则“所有写入都成功”可能只是根本没有开启只读。不能把权限拒绝、只读文件系统和空间不足都归为同一错误。

本批没有执行这一步,运行器只是核对JSON矩阵与read_only字段。输出root_denied是契约中一项拒绝,不是假服务实际收到的系统错误。附件镜像为未拉取占位,不能直接用来部署,也不代表正式网关兼容只读模式。目标软件启动成功后,还需覆盖会在运行期才触发的写入功能。

给可写区域设置生命周期与预算

持久数据需要可靠挂载与管理,临时数据需要大小约束和退出清理。tmpfs使用内存,不能因为它不落普通磁盘就忽略容量;可写卷也不会因为挂载正确就自动拥有合适权限。用户身份、属主和挂载路径应一起核对,避免通过给容器更高权限掩盖路径设计问题。

Docker Compose服务文档提供read_only、volumes与tmpfs配置入口,但配置有效不等于应用所有功能已兼容。验收单应列路径用途、允许动作、容量、持久性和实际探针结果,再对真实网关做授权范围内的测试。本文只提供迁移前审查工具,不改正式挂载。先把需要写入的最小集合找全,才能合理保持程序目录只读,而不是在上线后靠不断放宽权限解决缺失路径。

配套样本与复核入口

下载本篇独立合成输入和实验运行器,并下载运行器实际读取的c043.compose.yaml。上述文件放在同一目录后运行 python run_lab.py C043。完整运行需要全部四十四份输入及相关配置。结果中的method区分离线计算、静态参考检查与回环实测,不能把前两者当成真实网关已通过。

资料核对日期:2026-10-24。官方依据1;官方依据2。

与本站相关基础教程的区别:旧文未提供写入路径契约;本文用无敏感假服务验数据卷、临时目录、stdout路径,不宣称特定New API镜像能直接只读运行。

加微信,把这一页发到你手机上

扫码加站长企业微信,会自动把这一页的链接发给你。模型接入、token 计费上有问题,也可以直接问。

去留微信

不想自己搭网关、自己维护渠道?

力达云是托管的 OpenAI / Anthropic 双格式端点,一期提供 DeepSeek,注册送 ¥5 额度。

去试用

这个页面有问题?

提交时会附带当前页面地址和浏览器信息,帮助我们定位问题。不填联系方式即为匿名。