有没有人知道如何在docker容器内挂载nfs共享文件夹的centos基础映像?我试过这个命令:
mount server:/dir /mount/point
并得到下一个错误:mount.nfs: rpc.statd is not running but is required for remote locking.
mount.nfs: Either use '-o nolock' to keep locks local, or start statd.
个mount.nfs: an incorrect mount option was specified
当我尝试将其与 -o nolock 选项一起使用时,错误为:
mount.nfs: Operation not permitted
5条答案
按热度按时间svdrlsy41#
从docker 17.06开始,您可以在运行容器时直接将NFS共享挂载到容器,而无需额外的功能
或者,可以在创建容器之前创建卷:
vmpqdwk32#
要使用
mount
,您需要CAP_SYS_ADMIN
功能,该功能在创建容器时由Docker删除。对此有几种解决方案:
1.使用
--cap-add sys_admin
标志启动容器。这将导致Docker保留CAP_SYS_ADMIN
功能,这将允许您从容器中挂载NFS共享。这可能是一个安全问题;不要在不受信任的容器中这样做。[这个答案的前一个版本建议使用--privileged=true
来保留 * 所有 * 功能,感谢@earcam建议使用--cap-add
]。1.在主机上装载NFS共享,并将其作为主机卷传递到容器中:
1.使用Docker宗卷插件(如Netshare插件)将NFS共享直接挂载为容器宗卷:
t98cgbkg3#
对于已接受答案中列出的第二个选项,我不确定您是否真的尝试过使用
"docker run -v"
命令将主机上的NFS共享作为卷传递给Docker容器。我最近尝试过这样做,以下是主机上的nfs共享的信息:然后:
但Docker守护程序总是报告以下错误:
经过多次搜索,我发现错误实际上来自docker守护进程,它以**“root”身份运行。当docker运行一个带有要挂载的卷的容器时,它会请求docker守护进程挂载它。问题是,NFS服务器将以不同的方式处理“root”。默认情况下,NFS服务器将“root”Map到“nobody”**,从而导致错误消息:reference
mwkjh3gx4#
我把nfs挂载到了docker container上,谢谢@helmbert。
1.运行带有
--privileged=true
标志的Docker容器。1.安装nfs工具包并在CentOS上挂载nfs。
1.显示nfs服务器的挂载。
pxy2qtax5#
通过添加
--cap-add sys_admin
标志到客户端容器对我来说是不够的。我得到了错误:经过几个小时的研究,我发现它看起来像完全权限
--privileged
是需要正确安装在码头容器内。另外,不要忘记在你的docker容器中安装必要的nfs客户端软件包。