Comments on Use FUSE filesystem in Docker container

  1. 您好,我阅读了您所著的这篇文章,对我帮助很大,解决了我的燃眉之急,非常感谢您将这种解决问题的思路提供给大家。

    但是,我在实践您文中的方法时遇到了一些问题,想寻求您的帮助:我在docker中启动UML后,试图挂载webDAV成功,但是我挂载的文件系统需要能被host的某个服务程序(直说吧,一个数据库)访问到,请问需要如何操作?是否需要终端复用才能同时开启多个应用?

    最后再次对您的无私奉献表示感谢

  2. 您好,我阅读了您所著的这篇文章,对我帮助很大,解决了我的燃眉之急,非常感谢您将这种解决问题的思路提供给大家。

    但是,我在实践您文中的方法时遇到了一些问题,想寻求您的帮助:

    1. 我在docker中启动UML后,试图挂载webDAV不成功:

    1.1 执行mount.davfs https://webdav.yandex.ru /mnt/webdav后返回mount.davfs: can’t change group of directory /var/run/mount.davfs: Operation not permitted
    1.2 执行mount -t davfs https://webdav.yandex.ru /mnt/webdav后返回mount: mounting https://webdav.yandex.ru on /mnt/webdav failed: No such device

    2. 挂载的webDAV文件系统需要能被host的某个服务程序(直说吧,一个数据库)访问到,请问需要如何操作?是否需要终端复用才能同时开启多个应用?

    最后再次对您的无私奉献表示感谢

    1. 挂载的问题需要确认 UML 是不是以 root 用户启动的;
      还有 ls -dl /var/run/mount.davfs 看看所有者和群组是不是都是 davfs2;

      要让 UML 中的文件系统能被 host 程序使用,就是参考导出 UML FUSE 文件系统 这一节了,看你的 Docker 中能否挂载 NFS,不能直接挂载的话是比较麻烦的。

  3. 你好,我用 Docker 的 Ubuntu:1604 镜像尝试运行你编译的 UML 系统,在 Checking that ptrace can change system call numbers 的时候,提示 ptrace: Operation not permitted ,添加 --cap-add=SYS_PTRACE 之后提示 /dev/shm must be not mounted noexec。

    我查到另一个在 Docker 里运行 UML 的镜像( https://hub.docker.com/r/weberlars/diuid/ ) 同样要求 SYS_PTRACE 权限,并使用 tmpfs 挂载了一个 umlshm。

    因为看到文章开头说环境是非特权容器,Bluemix 的 Docker 服务又已经关闭了,所以没有办法在相同的环境测试,不知道是 Bluemix 的容器本身带有所需的权限还是比如 Docker 的后续更新导致的。请问这两个是在 Docker 容器里运行 UML 必需的吗?或者是 UML 有选项关闭相应特性的。

    log(容器中):
    root@f345eb93aa08:~/uml# ./uml-linux.sh
    Core dump limits :
    soft - NONE
    hard - NONE
    Checking that ptrace can change system call numbers…ptrace: Operation not permitted
    check_ptrace : expected SIGSTOP, got status = 9

    1. UML 是必须依赖 ptrace 的,我之前也在 OpenVZ 容器中测试过,
      你说的添加 --cap-add=SYS_PTRACE 之后提示 /dev/shm must be not mounted noexec,那是否可以 remount /dev/shm 把 noexec 选项给去掉?
      现在 Bluemix 关闭了,如果你能访问已经被墙的 Arukas 的话也可以用这个服务试试。
      另外 Win10 自带的 WSL 环境中运行 UML kernel 也会报类似的错误。

      1. 如果是必须依赖的话,大概就是 Bluemix 的容器本身在运行的时候添加了一些诸如 SYS_PTRACE 的权限了。。shm 的问题我看 https://github.com/moby/moby/issues/6758 大概是无法从容器内部解决的。

        weberlars/diuid 文档中的 --cap-add=SYS_PTRACE -e TMPDIR=/umlshm --tmpfs /umlshm:rw,nosuid,nodev,exec,size=8g 应该已经是在 Docker 中运行 UML 的最简单的参数了。

        本来是想能在不添加额外参数的 Docker 容器里运行的 _(:з」∠)_,加权限的话用 UML 的意义就比较小了。。

  4. 您好,在没用特权的远程docker里,我直接下载的tar.xz文件,然后解压直接运行 ./uml-linux.sh
    但是报错了,这是可能是什么原因的?有调试的办法吗?


    console [mc-1] enabled
    read_cow_header - short header
    VFS: Mounted root (hostfs filesystem) on device 0:11.
    devtmpfs: mounted
    This architecture does not have kernel memory protection.
    Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b

    CPU: 0 PID: 1 Comm: init Not tainted 4.10.1 #17
    Stack:
    6482bc00 60190e70 60190e70 6482bc00
    6008c5a1 6008bccb 6440df00 3000000010
    6482bcd0 6482bbe0 6440dc00 0000000b
    Call Trace:
    [] ?
    printk+0x0/0x9b
    [] ?
    os_is_signal_stack+0x15/0x30

Leave a Comment

Your email address will not be published. Required fields are marked *

*