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

Docker run -v 的 rw 和 ro 模式_docker ro

一、前言

在使用 Docker 启动容器时,通常需要将宿主机的文件或目录挂载到容器中,以便于管理配置、持久化数据和调试日志。本篇博客将重点介绍 -v/--volume 参数的使用方式、挂载权限(rwro)的区别,以及如何通过 docker inspect 命令查看挂载详情。

二、为什么需要挂载卷

  • 配置管理便利:不挂载时,修改容器内配置需要进入容器执行命令;挂载后,可直接在宿主机上编辑配置文件即可生效。
  • 日志持久化与查看:容器日志默认存放在容器内,通过挂载宿主目录可快速定位和分析日志。
  • 数据持久化:容器被销毁后,未挂载的文件将随之丢失;挂载卷可保证数据在容器重建后依然保留。

以 Nginx 为例:

  • 未挂载时:需使用 docker exec -it <container> /bin/sh 进入容器内,编辑 /etc/nginx/nginx.conf,并重启服务。
  • 挂载时:只需在宿主机编辑本地的 nginx.conf,保存后容器内配置自动更新。

三、挂载权限:rorw 与默认模式

模式文件操作表现
不指定等同于 rw,读写挂载;
ro只读挂载:• 文件:容器内无法修改;• 目录:容器内无法新增/删除或修改包含的文件,会提示 read-only
rw读写挂载:• 文件:宿主机与容器内的修改会相互同步,但容器内删除宿主机文件可能报错 Device or resource busy;• 目录:所有新增、修改、删除操作均可双向同步。

默认模式即不指定时,Docker 会将挂载视为 rw

四、查看挂载信息:docker inspect

使用 docker inspect <容器ID或名称>,在返回的 JSON 中查找 Mounts 数组,即可看到挂载列表及详细属性:

"Mounts": [{"Type": "bind","Source": "/Users/yuanmomo/Documents/docker/nginx/conf/nginx.conf","Destination": "/etc/nginx/conf/nginx.conf","Mode": "rw","RW": true,"Propagation": "rprivate"},{"Type": "bind","Source": "/Users/yuanmomo/Documents/docker/nginx/html","Destination": "/usr/share/nginx/html","Mode": "","RW": true,"Propagation": "rprivate"}
]
  • Type:挂载类型(bind 表示目录绑定)。
  • Source:宿主机路径。
  • Destination:容器内路径。
  • Mode:读写模式(rwro 或空表示默认 rw)。

五、最佳实践

  1. 使用目录映射:优先挂载目录代替单个文件,可避免容器应用重启或覆盖时出现加载失败。
  2. 配置文件管理:将配置目录集中管理,如 /etc/nginx/conf.d/,通过映射方式加载多份配置。
  3. 日志分离:将日志文件目录挂载到宿主机指定目录,以便于统一收集和分析。
  4. 权限控制:生产环境中建议对敏感目录使用 ro 模式,降低误操作风险。

六、结语

本文介绍了 Docker 挂载卷的基本使用方法、rorw 模式的差异,以及如何通过 docker inspect 查看挂载信息。希望能帮助大家在日常容器管理中更加高效、可靠地使用挂载卷。

http://www.xdnf.cn/news/543907.html

相关文章:

  • React Flow 数据持久化:Django 后端存储与加载的最佳实践(含详细代码解析)
  • React中使用ahooks处理业务场景
  • 网络攻防技术
  • 微软押注“代理式AI网络”:一场重塑软件开发与工作方式的技术革命
  • 网络攻击通常会被分为哪些类型?
  • FreeSWITCH rtcp-mux 测试
  • Hbuilder X4.65新建vue3项目存在的问题以及解决办法
  • HTB 赛季8靶场 - Puppy
  • 对未来软件的看法
  • Vue响应式系统演进与实现解析
  • Linux系统之traceroute命令详解:追踪网络路径的核心工具
  • Linux网络编程:广播、组播与原始套接字
  • 51单片机编程学习笔记——无源蜂鸣器演奏《祝你生日快乐》
  • 计算机网络通信技术与协议(七)———关于ACL的详细解释
  • 高密度服务器机柜散热方案:高风压风机在复杂风道中的关键作用与选型要点
  • 电力设备智能化方案复盘
  • DataLight(V1.7.12)版本更新发布
  • 通义灵码助力Neo4J开发:快速上手与智能编码技巧
  • 钉钉开发之AI消息和卡片交互开发文档收集
  • React的合成事件(SyntheticEventt)
  • 企业终端设备的安全管控
  • 【Tauri2】046—— tauri_plugin_clipboard_manager(一)
  • RK3588 ArmNN CPU/GPU ResNet50 FP32/FP16/INT8 推理测试
  • Qt项目开发中所遇
  • 《Android 应用开发基础教程》——第十三章:权限管理机制与运行时权限请求(以拍照/存储为例)
  • MySQL——基本查询内置函数
  • 从零开始的抽奖系统创作(2)
  • vue3/vue2大屏适配
  • 基于统计检验与多模型对心脏病数据的分析与预测
  • Oracle 11g post PSU Oct18 设置ssl连接(使用wallets)