启用--read-only使容器根文件系统只读,必须配合--tmpfs为/tmp、/run等路径挂载可写tmpfs,或用-v显式挂载可写volume,未挂载路径仍只读,可通过mount和touch验证权限。

直接加 --read-only 就能让容器根文件系统变成只读,这是最核心、最有效的一步。但光这样往往不够——多数应用需要写 /tmp、/run 或日志目录,所以必须配合可写挂载,否则容器可能根本起不来。
启用全局只读模式
使用 --read-only 启动容器后,整个根文件系统(包括 /、/etc、/usr、/var 等)都会被挂载为只读。此时任何写操作(比如 touch /test、apt install、nginx 写 pid 文件)都会报 “Read-only file system” 错误。
- 命令示例:
docker run --read-only -d nginx:alpine - 验证方式:进容器执行
mount | grep ' / ',看到ro,relatime即表示生效 - 检查是否生效的快捷命令:
docker inspect <容器名> -f '{{.HostConfig.ReadonlyRootfs}}',返回 true 即成功
为运行必需路径挂载可写 tmpfs
tmpfs 是内存中的临时文件系统,不落盘、速度快、重启即清空,适合存放临时文件、运行时状态和 socket 文件。
MiniMax 图片理解 + 网络搜索 MCP 工具。适配 Docker 环境(极空间等),支持图片 OCR 识别、图像内容理解、网络搜索。API Key 安全存储在本地 credentials 文件,不暴露在代码中。
-
/tmp:通用临时目录,多数程序默认使用 -
/run和/var/run:存放 PID、socket、锁文件,nginx、supervisord、systemd-init 类容器依赖它 -
/var/log:如需写日志(且不持久),可挂载 tmpfs 并限制大小 - 示例:
--tmpfs /run:rw,size=5M --tmpfs /tmp:rw,size=10M
按需挂载可写 volume 或绑定目录
如果需要持久化或共享数据(如上传目录、缓存、数据库文件),必须显式挂载可写卷;未挂载的路径仍继承只读属性,写入必失败。
- 命名卷(推荐):
-v app-data:/app/uploads:rw - 宿主机绑定(注意权限):
-v /host/uploads:/app/uploads:rw,z(:z适配 SELinux) - 强制只读挂载某配置卷:
-v config-volume:/etc/myapp:ro - 单个配置文件只读挂载:
-v $(pwd)/config.conf:/app/config.conf:ro
验证与常见问题
启动后建议快速验证三件事:
- 进容器执行
touch /test→ 应失败(确认全局只读) - 执行
touch /tmp/hello→ 应成功(确认 tmpfs 可写) - 执行
mount | grep tmpfs→ 应列出你声明的挂载点及其rw权限 - 若应用启动失败,优先检查是否漏挂了
/run或/var/run

















