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

一、前言

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

二、为什么需要挂载卷

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

以 Nginx 为例:

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

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

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

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

四、查看挂载信息:docker inspect

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

json 复制代码
"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 :读写模式(rw、ro 或空表示默认 rw)。

五、最佳实践

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

六、结语

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

相关推荐
晨陌y19 小时前
Flare自托管导航页教程:Docker部署、多用户、API与公网访问
运维·docker·容器
梅孔立1 天前
Docker 容器网络不通:Tomcat 无法解析 MySQL、Nginx 无法反代 Tomcat 的生产级排查与治理
网络·docker·tomcat
螺蛳粉 螺蛳粉1 天前
第 05 篇:etcd 深入:Raft 共识、watch 机制与快照备份恢复实战(底座认知 05)
docker·云原生·容器·kubernetes·etcd·分布式存储·kube-apiserver
PellyKoo1 天前
【docker】cifs卷改smb密码后容器起不来的解决方法
运维·docker·容器
时早玖沐1 天前
放弃 QQ 官方机器人:用 SnowLuma + AstrBot 自建 QQ 机器人
docker·开源·agent
阿标在干嘛1 天前
容器编排的“场景适配”:我们为什么在部分服务中回归了Docker Compose?
运维·docker·容器
IT19952 天前
Docker 快速部署 DM8 达梦数据库|完整踩坑笔记
笔记·docker·容器
wzg20162 天前
ubuntu通过docker镜像部署安装onlyoffice
linux·ubuntu·docker
Star(up up up)2 天前
Docker系列---Docker容器基本命令(新手小白保姆级实操教程)
运维·学习·程序人生·青少年编程·docker·容器·dubbo
方便面不加香菜2 天前
Docker Image-- 镜像命令详解与使用示例
运维·docker·容器