先引用官方文档原话:If neither ‘rw’ or ‘ro’ is specified then the volume is mounted in
read-write mode.(https://docs.docker.com/engine/reference/run/#volume-shared-filesystems)
官方文档说不指定的时候默认是rw模式。
用docker inspect查看容器的属性,可以看到关于挂载目录的详细参数,格式如下:
“Mounts”:
{
“Type”: ,
“Source”: ,
“Destination”: ,
“Mode”: ,
“RW”: ,
“Propagation”:
}
1. 默认情况不使用:rw :ro选项,Mode的值就是空字符串”“。
2. 使用:rw选项,Mode的值就是”rw”。
3. 使用:ro选项,Mode的值就是”ro”。
我们知道docker -v不仅可以挂载映射目录,也可以只挂载映射一个文件。
1. 如果我们按照1,2设置来挂载目录,宿主主机和docker互相都可以读写同步,如果我们按照1,2设置来挂载文件,这个时候只有docker的写可以同步到宿主主机上面去,宿主主机写不同步到docker。而且一旦宿主主机上写了修改了映射文件,那么docker里面再怎么写都不再同步到宿主主机了。
注意:这里有一个特殊的玩法,假如docker1和docker2都映射了主机上同一个文件到自己的目录,在docker1里面改了文件,docker2内也是同时改变的,就算你在主机上改了文件导致主机和docker1,docker2不再同步了,这个操作还是可以。
2. 如果我们按照3来挂载目录或者挂载文件,这个时候docker内也不能写,宿主主机写了也不同步进去了,相当于创建的时候拷贝一份不可改变的配置进来而已。
官方文档中有这样一段话:
Note: Many tools used to edit files including vi and sed –in-place may result in an inode change. Since Docker v1.1.0, this will produce an error such as “sed: cannot rename ./sedKdJ9Dy: Device or resource busy”. In the case where you want to edit the mounted file, it is often easiest to instead mount the parent directory.
确实,我们在docker内部运行程序使用shell的sed修改映射文件内容的时候会报错Device or resource busy,我的做法是每次cp一个临时文件出来,然后修改这个临时文件,最后cp -f 强制替换这个映射文件,官方建议我们最好还是用映射目录的方式来互相同步修改。

docker -v :rw :ro相关推荐

  1. Dockerfile 中的 VOLUME 与 docker -v 区别

    Dockerfile 中的 VOLUME 挂载与 docker -v 命令挂载,两者有明显区别: 1.VOLUME Dockerfile中 VOLUME 方式挂载到宿主机上的是匿名卷,在宿主机上是自动 ...

  2. docker -v 覆盖了容器中的文件_「安定坊」安全卫士-容器漏洞评估

    现阶段,我们正在从虚拟化过渡到容器化,一些我们所熟悉的容器化技术就包括了诸如docker或http://quay.io等.一般来说,我们可以通过配置程序依赖环境来为特定应用程序建立镜像,通常当开发人员 ...

  3. docker -v 文件夹下没有数据_详细!快速入门指南!Docker

    什 么 是 容 器? 容器只是实现隔离的一种方法.与虚拟机不同,它们不是通过模拟硬件来实现隔离,而是通过使用现有的Linux内核功能来实现隔离.在典型的Unix/Linux操作系统中,所有进程都共享相 ...

  4. docker -v 覆盖了容器中的文件_10分钟让你理解 docker 容器中的 uid 和 gid

    默认情况下,容器中的进程以 root 用户权限运行,并且这个 root 用户和宿主机中的 root 是同一个用户.听起来是不是很可怕,因为这就意味着一旦容器中的进程有了适当的机会,它就可以控制宿主机上 ...

  5. docker -v 覆盖了容器中的文件_浅谈docker中宿主机和容器之间互相copy文件的两种方式,欢迎补充...

    在dokcer的日常使用过程中,我们可能会遇到将宿主机内文件/目录copy到容器内,或者将容器的文件/目录copy到宿主机中,下面我们就来简单的谈一下关于这种情况的两种操作. 1.Docker cp命 ...

  6. docker -v 挂载文件_浅谈关于docker中数据卷的操作,附带案例

    Volume数据卷的由来: Docker镜像是由多个文件系统(只读层)叠加而成.当我们启动一个容器的时候,Docker会加载只读镜像层并在其上添加一个读写层.如果运行中的容器修改了现有的一个已经存在的 ...

  7. docker -v 覆盖了容器中的文件_Docker容器之安装Mysql

    Docker容器之安装Mysql 1.拉取mysql镜像 docker pull mysql 提示:此处拉取最新版本镜像. 2.通过镜像创建容器 根据需求创建Mysql容器(此处我们选择自定义映射端口 ...

  8. Docker -v 对挂载的目录没有权限 Permission denied解决办法

     情况描述     今天在使用docker run -d -p 9091:8080 -v /home/daniu/docker/tomcat/webapps/:/usr/local/tomcat/we ...

  9. linux硬盘ro改为rw,RO,RW,ZI 和scatter file详解(转载)

    要了解RO,RW和ZI需要首先了解以下知识: (1) ARM程序的组成 此处所说的"ARM程序"是指在 ARM系统中正在执行的程序,而非保存在ROM中的bin映像(image)文件 ...

最新文章

  1. centos6.5命令安装redis并设置redis自启动,可远程连接
  2. struts2和servlet同时用(访问servlet时被struts2过滤器拦截问题的解决)
  3. ZYNQ EMIO使用及可重用封装
  4. Liunx UID and GID
  5. Java VisualVM插件地址
  6. ARM 指令集跳转指令
  7. NFS服务启动:rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused)
  8. 安卓WindowManager注入事件如何跳出进程间安全限制
  9. Keli Linux与网络安全(2)——初探Keli
  10. win7安装Python所需资源
  11. IDEA打包的两种方式及注意事项
  12. 据说是可减少50%的超越卓越经验
  13. 缓动函数及DOTWeen的SetEase方法
  14. 支付宝h5网页的支付
  15. Tikhonov 正则化模型用于图片去噪_matlab
  16. wireshark抓包测试:海康摄像机
  17. 游戏开发中的问题-----摘自《大型多人在线游戏开发》
  18. 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。
  19. it之家鸿蒙手机系统,IT之家安卓版新功能!支持识别鸿蒙系统与鸿蒙应用,无需更新...
  20. 如何使用windows的计划任务?计划任务

热门文章

  1. Reinforcement Learning | 强化学习十种应用场景及新手学习入门教程
  2. 一)中央空调变风量变水量整体群控节能系统(专利技术)
  3. 三小时,破解数据库智能管控中的奥秘
  4. 大前端学习记二开发准备
  5. MVC---Android App的设计架构:MVC,MVP,MVVM与架构经验谈
  6. 图像彩色化方法(深度学习)
  7. Git 删除 GitHub仓库的文件——详细操作 githua如何删除文件
  8. python 八进制转十_python进制转换(二丶八丶十丶十六)
  9. Python有什么用?Python 的 10 个实际用途
  10. IOP测试 -- 互操作性原型测试 -- 蓝牙设备互联