什么是数据卷

数据卷是经过特殊设计的目录,可以绕过联合文件系统(UFS),为一个或者多个容器提供访问,数据卷设计的目的,在于数据的永久存储,它完全独立于容器的生存周期,因此,docker不会在容器删除时删除其挂载的数据卷,也不会存在类似的垃圾收集机制,对容器引用的数据卷进行处理,同一个数据卷可以只支持多个容器的访问。

数据卷的特点

1.数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,这些数据会被拷贝到新初始化的数据卷中

2.数据卷可以在容器之间共享和重用

3.可以对数据卷里的内容直接进行修改

4.数据卷的变化不会影像镜像的更新

数据卷的使用

为容器添加数据卷

docker run -itd -p 80:80 -v /data/log:/var/log/nginx  --name nginx nginx
c70ffb5d7e6e629a67a3c0e2c28bfddf2f0ef48868fc7b9316e54b028fd0b7a0

为数据卷添加访问权限

docker run -itd -p 80:80 -v /data/log:/var/log/nginx:ro  --name nginx nginx

添加只读权限之后在 docker 容器的/var/log/nginx目录下就不能在创建文件了,为只读权限;在宿主机下的/data/log下可以创建东西

通过 -v 容器内路径, ro rw 改变读写权限

  • ro readonly 只读
  • rw readwrite 可读写

一旦设置了容器权限,容器对我们挂载出来的内容就有限定了

ro : 说明这个路径只能通过宿主机来操作,容器内无法操作

数据的覆盖问题

1.如果挂载一个不存在的数据卷(目录)到容器中的一个非空目录中,那么这个目录下的文件会被复制到数据卷中。

2.如果挂载一个非空的数据卷到容器中的一个目录中,那么容器中的目录中会显示数据卷中的数据。如果原来容器中的目录中有数据,那么这些原始数据会被隐藏掉。

这两个规则都非常重要,灵活利用第一个规则可以帮助我们始化数据卷中的内容。掌握第二个规则可以保证挂载数据卷后的数据总是你期望的结果。

results matching ""

    No results matching ""