--read-only 参数使 Docker 容器根文件系统只读以增强安全,需配合 --tmpfs 挂载临时路径(如 /tmp、/var/log)满足写入需求,挂载卷应显式声明 ro/rw,验证可通过 touch 测试或 mount 命令查看 ro 标志。
使用 --read-only 参数可让 docker 容器的根文件系统(/)变为只读,防止运行时意外或恶意写入,提升安全性与稳定性。
只需在 docker run 命令中添加 --read-only 即可:
docker run --read-only nginx —— 整个根文件系统不可写-v 或 --tmpfs 挂载的目录),它们仍可按自身配置读写/tmp、/var/log 等默认路径写入,会因只读失败,需额外处理多数应用需要临时写入(如日志、缓存、PID 文件),可通过 --tmpfs 显式挂载可写内存文件系统:
docker run --read-only --tmpfs /tmp --tmpfs /var/log nginx--tmpfs /run:rw,size=10M,mode=0755 可指定大小和权限/dev、/proc、/sys 等伪文件系统不受 --read-only 影响,保持原有行为--read-only 不改变外部卷的读写属性,但建议显式声明以明确意图:
-v /host/data:/app/data:ro —— 挂载为只读-v /host/logs:/var/log:rw —— 若需写日志,挂载为可写,并确保目标路径不在只读根下/etc),否则可能被拒绝或覆盖失败进入容器后尝试写入根目录下的文件即可确认:
docker exec -it <container> shtouch /test.txt → 应报错 Read-only file system
touch /tmp/test.txt → 应成功(前提是挂载了 --tmpfs /tmp)mount | grep " / " ,输出中应含 ro, 标志