Docker的volumes踩坑

14 篇文章 0 订阅

挂载volume的行为

volume的挂载是 以宿主机为主 ,主要有如下几个行为可能:

hostcontainermount result
文件夹不存在/文件夹存在但为空文件夹不存在/存在但为空/存在且不为空container中文件被覆盖(清空)
文件夹存在且不为空文件夹不存在/存在但为空/存在且不为空container中文件夹内容被覆盖(原内容清空, 覆盖为host上文件夹内容)

将容器已经存在的文件挂载到宿主机

由上面可知,容器中原本存在的文件一旦进过挂载,就一定会被宿主机覆盖,但是有如下几个方法,可以曲线救国:

  • docker cp命令先将容器内的数据copy到宿主机然后再进行挂载
  • docker-entrypoint.sh等脚本中执行创建文件和文件夹等相关命令,因为挂载行为先于脚本的执行行为,所以在脚本执行的时候已经挂载volume,当脚本创建相关文件的时候就可以反映到宿主机上了

volume相关命令

docker volume ls #查看所有命名和匿名volume
docker inspect <volume-name> #查看volume相关信息

docker volume create <volume-name> #创建volume
docker volume rm <volume-name> #删除

docker volume preun #清空没有容器挂载中的volume stop中的容器的volume不会清空

#控制volume的读写权限
-v <xxx>:容器内路径:ro #只读 在容器内只能读挂载的文件 
-v <xxx>:容器内路径:rw  #读写 在容器内能读写挂载文件 默认

共享数据卷

一个容器可以共享其它容器已经挂载了的数据卷,一旦共享那么只要在任意一个容器里面操作数据卷都相当于操作同一个,会影响所有容器和宿主机上的文件。并且容器删除并不会删除数据卷

docker run --name b1 -v $PWD:/v1  -it busybox:1.32.0 sh
docker run --name b2 --volumes-from b1  -it busybox:1.32.0 sh

volume权限问题

TODO

volume规则总结

  • 应该避免挂载一个空的或未创建的目录,这样可能会清空容器中原来存在的文件

  • 如果挂载一个没有创建的文件,则docker会自动创建

  • docker挂载路径容器和宿主机不支持 相对路径 ,都必须指定 绝对路径

Docker volumes 权限是指在使用 Docker 容器时,容器内部访问宿主机上的卷(volumes)时所涉及的权限控制。 首先,需要明确容器内部的访问权限与宿主机上的卷的访问权限可能不同。默认情况下,Docker 在创建卷时会将卷的权限设置为与宿主机的权限保持一致。也就是说,容器内可以读写该卷,只要宿主机上的权限允许访问。 其次,Docker 提供了一种更加灵活的方式来管理容器与宿主机卷之间的权限问题。在创建卷时,可以通过指定 `-v` 或 `--mount` 标志来设置更具体的权限。可以使用以下选项来控制容器内的读写权限: - `ro`:只读权限,容器只能读取卷内的数据,无法对卷进行写入操作。 - `rw`:读写权限,容器可以读取和写入卷内的数据。 例如,使用以下命令创建一个只读的卷: ``` docker run -v /path/on/host:/path/in/container:ro image_name ``` 这样,容器内部只能读取 `/path/in/container` 目录下的数据,并且无法对该目录进行写入操作。 最后,需要注意的是,如果不明确指定权限,容器将默认具有读写权限。因此,在实际使用时,需要明确指定容器与卷之间的访问权限,以确保系统的安全性和可靠性。 总结来说,Docker volumes 权限控制允许我们在容器内对宿主机上的卷进行灵活的读写权限设置,可以根据实际需求来控制容器与卷之间的访问权限。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

aiotud

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值