Max*_*sse 5 debian mount fuse docker dockerfile
当我尝试在 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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
设备 /dev/fuse 存在
root@8e8091d97157:/# ls -l /dev/fuse
crw-rw-rw- 1 root root 10, 229 Oct 18 12:06 /dev/fuse
Run Code Online (Sandbox Code Playgroud)
但安装失败...我在日志中没有看到有趣的事情:
/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
Run Code Online (Sandbox Code Playgroud)
/var/日志/调试
root@8e8091d97157:/# tail /var/log/debug
Oct 18 12:36:03 8e8091d97157 mount.davfs: davfs2 1.5.2
Run Code Online (Sandbox Code Playgroud)
/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
Run Code Online (Sandbox Code Playgroud)
所以一切看起来都很正常。我很乐意得到一些帮助。谢谢。
欧内斯特.
我找到了解决方案。事实上,正如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
Run Code Online (Sandbox Code Playgroud)
该解决方案包括树步骤:
Run the container in privileged mode (--privileged)
Add all capabilities (--cap-add=ALL)
Passthrough /lib/modules into the container (-v /lib/modules:/lib/modules)
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你。
仍然存在一个问题:这是唯一的方法吗?
欧内斯特.
归档时间: |
|
查看次数: |
9899 次 |
最近记录: |