Linux 安全:如何使用 --read-only 启动 Docker 容器
发布时间 - 2025-11-19 00:00:00 点击率:次启用 --read-only 模式可将容器根文件系统设为只读,防止运行时写入,提升安全性;需配合 --tmpfs 或 -v 挂载临时或持久化存储以支持必要写操作。
在运行 Docker 容器时,使用 --read-only 选项是一种简单而有效的安全加固手段。它能防止容器在运行过程中对文件系统进行
写入操作,从而降低因应用漏洞或恶意行为导致的数据篡改或持久化攻击风险。
什么是 --read-only 模式?
启用 --read-only 后,Docker 会将容器的根文件系统挂载为只读。这意味着容器内的进程无法修改已有的文件、创建新文件或删除内容(除非显式挂载了可写目录)。
这个机制特别适合那些不需要持久写入本地磁盘的应用,比如静态 Web 服务、API 前端或数据处理工具。
如何启用 --read-only 模式
启动容器时,只需添加 --read-only 参数即可:
docker run -d --read-only nginx这样启动的 Nginx 容器,其整个根目录(如 /usr、/bin、/etc 等)都不可写。
但要注意:很多应用需要写临时数据,例如日志、缓存或会话文件。因此通常还需配合可写挂载点使用。
允许必要的写入操作:使用临时文件系统
为了在只读容器中支持必要写入,可以通过 --tmpfs 或 -v 挂载方式提供可写层:
- --tmpfs /tmp:将内存中的 tmpfs 挂载到 /tmp,用于临时文件
- --tmpfs /var/log:允许应用写日志
- --tmpfs /var/run:常用于守护进程的运行时状态文件
完整示例:
docker run -d \ --read-only \ --tmpfs /tmp \ --tmpfs /var/log \ --tmpfs /var/run \ nginx这种方式既保证了系统文件不被篡改,又满足了运行时需求。
结合 volume 实现持久化写入(按需)
如果需要持久化存储(如上传文件、数据库等),应通过 -v 显式挂载宿主机目录或命名卷:
docker run -d \ --read-only \ -v /host/uploads:/app/uploads \ my-web-app只有 /app/uploads 可写,其余路径仍受保护。
这种最小权限原则能有效限制潜在攻击面。
基本上就这些。使用 --read-only 是提升容器安全性的低成本高收益实践,配合 tmpfs 和 volume 控制写入位置,既能保障安全性,又不影响功能。
# linux
# 前端
# docker
# nginx
# app
# 工具
# 持久化存储
# var
# 数据库
# 文件系统
# 是一种
# 不需要
# 只需
# 设为
# 可以通过
# 数据处理
# 或删除
# 又不
# 不被
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速使用云服务器搭建个人网站?
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
微信小程序 闭包写法详细介绍
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
微信h5制作网站有哪些,免费微信H5页面制作工具?
Python结构化数据采集_字段抽取解析【教程】
Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
Android使用GridView实现日历的简单功能
网站制作企业,网站的banner和导航栏是指什么?
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能
如何用景安虚拟主机手机版绑定域名建站?
韩国服务器如何优化跨境访问实现高效连接?
如何基于云服务器快速搭建个人网站?
js实现获取鼠标当前的位置
微信小程序 input输入框控件详解及实例(多种示例)
如何实现建站之星域名转发设置?
百度输入法ai组件怎么删除 百度输入法ai组件移除工具
潮流网站制作头像软件下载,适合母子的网名有哪些?
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
linux写shell需要注意的问题(必看)
Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试
Laravel如何为API编写文档_Laravel API文档生成与维护方法
Laravel如何实现一对一模型关联?(Eloquent示例)
深入理解Android中的xmlns:tools属性
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
桂林网站制作公司有哪些,桂林马拉松怎么报名?
jQuery 常见小例汇总
Laravel观察者模式如何使用_Laravel Model Observer配置
Laravel如何实现用户注册和登录?(Auth脚手架指南)
Laravel如何使用Vite进行前端资源打包?(配置示例)
使用豆包 AI 辅助进行简单网页 HTML 结构设计
Laravel如何处理表单验证?(Requests代码示例)
HTML 中如何正确使用模板变量为元素的 name 属性赋值
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
如何挑选最适合建站的高性能VPS主机?
Laravel storage目录权限问题_Laravel文件写入权限设置
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
如何为不同团队 ID 动态生成多个非值班状态按钮
Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】
Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】
详解CentOS6.5 安装 MySQL5.1.71的方法
LinuxCD持续部署教程_自动发布与回滚机制
Laravel如何自定义错误页面(404, 500)?(代码示例)
Laravel如何实现密码重置功能_Laravel密码找回与重置流程
JavaScript实现Fly Bird小游戏
如何在云主机上快速搭建多站点网站?

