Docker run -v 的 rw 和 ro 模式

本文详细介绍了Docker中使用-v参数挂载宿主机文件或文件夹的方法,解释了rw、ro及默认模式的区别,并提供了通过docker inspect命令查看挂载状态的具体示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

docker run --volume , -v:绑定一个卷(可以绑定文件,也可以绑定文件夹)

为什么要使用 -v 

  • docker 启动容器时,如果不使用 -v/--volume 挂载宿主机的文件或文件夹,容器内的配置文件只能进入到容器内才能修改,输入的日志也是在容器里查看;这样不方便修改配置,也不利于日志查看;所以一般都是进行 -v 参数来进行挂载文件或文件夹
  • 举个例子,如果我们 docker 容器内启动了nginx,但是没有进行 挂载,那么我们只能进入容器里进行修改nginx.conf配置,查看日志,更改静态包
  • 但是如果启动时,进行文件和文件夹的挂载,那么我们直接操作宿主机下对应的文件和文件夹就可以得到我们想要的

其中 rw 、 ro 和 “不指定模式” ,关系到 宿主机 和 容器 的文件变化关系,所以需要单独记录一下

二、rw、ro 和 不指定 的 区别

  • 不指定(默认)权限同rw
  • ro
    • 文件:容器内不能修改,会提示read-only
    • 文件夹:容器内不能修改、新增、删除文件夹中的文件,会提示read-only
  • rw
    • 文件:不管是宿主机还是容器内修改,都会相互同步;但容器内不允许删除,会提示Device or resource busy;宿主机删除文件,容器内的不会被同步
    • 文件夹:不管是宿主机还是容器内修改、新增、删除文件,都会相互同步

三、通过 dokcer inspect CONTAINER ID 命令进行查看挂载情况

在 Mounts 内 的 Mode属性,举个例子,我的nginx挂载信息(因为元数据过多,所以只截取Mounts部分)

"Mounts": [
            {
                "Type": "bind",
                "Source": "/Users/wangjing/Documents/docker/nginx/conf/nginx.conf",
                "Destination": "/etc/nginx/conf/nginx.conf",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/Users/wangjing/Documents/docker/nginx/html",
                "Destination": "/usr/share/nginx/html",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
]

注:官方建议用映射目录的方式来互相同步修改。

注:以上内容仅提供参考和交流,请勿用于商业用途,如有侵权联系本人删除!

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JAVA·D·WangJing

您的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值