安装davfs2卷时,无法在docker箱中打开保险丝装置

当我尝试在docker容器上安装davfs2卷时遇到以下错误:

geoserver@8e8091d97157:~$ mount owncloud/ /sbin/mount.davfs: loading kernel module fuse /sbin/mount.davfs: loading kernel module fuse failed /sbin/mount.davfs: waiting for /dev/fuse to be created /sbin/mount.davfs: can't open fuse device /sbin/mount.davfs: trying coda kernel file system /sbin/mount.davfs: no free coda device to mount 

Dockerfile有以下内容:

 FROM debian:jessie ENV DEBIAN_FRONTEND noninteractive ENV TERM linux # environment variables ENV GEOSERVER_PASS geoserver RUN apt-get update RUN apt-get install -y davfs2 fuse RUN groupadd --gid 999 geoserver RUN useradd -ms /bin/bash --home /home/geoserver \ -p $(echo "print crypt("${GEOSERVER_PASS:-geoserver}", "salt")" | perl) \ --uid 999 --gid 999 geoserver USER geoserver RUN mkdir /home/geoserver/owncloud RUN mkdir /home/geoserver/.davfs2 USER root ADD secrets /home/geoserver/.davfs2/secrets RUN chown geoserver:geoserver /home/geoserver/.davfs2/secrets RUN chmod 0600 /home/geoserver/.davfs2/secrets RUN chmod u+s /sbin/mount.davfs RUN perl -p -i -e "s/#\s*use_locks\s*1/use_locks 0/" /etc/davfs2/davfs2.conf RUN adduser geoserver davfs2 RUN echo "https://my-owncloud-server.org/owncloud/remote.php/webdav /home/geoserver/owncloud davfs rw,user,noauto 0 0" >> /etc/fstab 

设备/ dev / fuse存在

 root@8e8091d97157:/# ls -l /dev/fuse crw-rw-rw- 1 root root 10, 229 Oct 18 12:06 /dev/fuse 

但是,挂载失败…我没有看到日志中有趣的事情:

/var/log/daemon.log

 root@8e8091d97157:/# tail /var/log/daemon.log Oct 18 12:36:03 8e8091d97157 mount.davfs: davfs2 1.5.2 Oct 18 12:36:04 8e8091d97157 mount.davfs: the server certificate is not trusted Oct 18 12:36:04 8e8091d97157 mount.davfs: issuer: TERENA, Amsterdam, Noord-Holland, NL Oct 18 12:36:04 8e8091d97157 mount.davfs: subject: Domain Control Validated Oct 18 12:36:04 8e8091d97157 mount.davfs: identity: owncloud-mshe.univ-fcomte.fr Oct 18 12:36:04 8e8091d97157 mount.davfs: accepted by user 

在/ var /日志/debugging

 root@8e8091d97157:/# tail /var/log/debug Oct 18 12:36:03 8e8091d97157 mount.davfs: davfs2 1.5.2 

/var/log/auth.log

 root@8e8091d97157:/# tail /var/log/auth.log Oct 18 12:35:59 8e8091d97157 su[890]: Successful su for geoserver by root Oct 18 12:35:59 8e8091d97157 su[890]: + ??? root:geoserver Oct 18 12:35:59 8e8091d97157 su[890]: pam_env(su:session): Unable to open env file: /etc/default/locale: No such file or directory Oct 18 12:35:59 8e8091d97157 su[890]: pam_unix(su:session): session opened for user geoserver by (uid=0) Oct 18 12:36:09 8e8091d97157 su[890]: pam_unix(su:session): session closed for user geoserver 

所以一切似乎都是正常的。 我会很高兴得到一些帮助。 谢谢。

欧内斯特。

谢谢,通过添加成功安装

 --privileged --cap-add=SYS_ADMIN --device /dev/fuse 

进入docker运行命令。

我find了解决scheme。 事实上,正如在DockerCVMFS文档中所解释的 ,“ 可以在容器中运行FUSE文件系统,但必须在主机系统上启用FUSE,Docker不会使您加载无法加载到主机上的内核模块 ” 。

因此,我试图在主机中加载模块熔丝,如docker容器中的modprobe所述

我使用下面的命令来启动容器,现在安装就可以了:

 docker run --name geosync_ssh_data_1 --privileged --cap-add=ALL -v /dev:/dev -v /lib/modules:/lib/modules geosync_ssh_data 

解决scheme包括树步骤:

 Run the container in privileged mode (--privileged) Add all capabilities (--cap-add=ALL) Passthrough /lib/modules into the container (-v /lib/modules:/lib/modules) 

希望能帮助到你。

还有一个问题:是唯一的方法吗?

欧内斯特。

这些安全选项太开放了。 现在,在Docker运行时权限中logging了FUSE支持。 所有你需要的是-cap-add SYS_ADMIN –device / dev / fuse