docker -v 容器映射NAS共享时存在不能访问的情况

现象
docker中使用-v参数映射宿主机本地目录时,如果本地目录存在有NAS存储的挂载目录,那么在NAS断开重新连接后,容器映射的目录会不能访问。
docker version 20.10.6

原因

使用-v 映射时,docker里面只会把NAS共享挂载后的inode作为docker容器里面的文件夹访问路径,如果nfs挂载有断开,重新挂载后的inode有变化,那么docker里面还是以前的inode,所以出现宿主机挂载存在,但是docker中挂载文件不存在的情况。

另外,有部分文章说,使用VIM编辑文件也存在一样的情况,但是据我测试。宿主机目录中文件Inode变化后,映射的docker目录的文件Inode也会变化,不存在这个情况。

使用-v时,NAS存储断开时,目录Inode的一直无变化。
在这里插入图片描述

使用–mount 时,NAS存储断开时,目录Inode的随着挂载变化而变化。

解决方法:不使用-v,使用–mount挂载,示例如下。

type=bind,source=/docker_mount,destination=/docker_mount,bind-propagation=shared

如果已经使用-v挂载了,那么只有重新启动容器刷新docker映射的文件夹Inode。

参考:

https://docs.docker.com/storage/bind-mounts/

https://blog.csdn.net/dhaiuda/article/details/83117772

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值