【问题标题】:mount cifs inside a centos container在 centos 容器中挂载 cifs
【发布时间】:2022-01-23 17:45:48
【问题描述】:

我已经尝试了 2 天来在我的 centos 容器中进行 cifs 挂载

通常在我们的生产服务器上,我们使用此命令进行挂载

mount.cifs -v //192.168.0.123/DATA/ /home/XXXX/DATA -o user=XXXXXX,gid=XXXX,password=XXXXXX,dom=XXXXX.local,dir_mode=0777,file_mode=0777,noperm

所以我尝试在我的容器中使用相同的命令,但我收到以下错误消息:

Unable to apply new capability set.

所以经过大量研究,我发现有必要添加以下选项--cap-add和privileged。

所以我在我的 docker-compose 中有这个选项

services:
    app:
        image: XXXXX
        ....
        ....
        cap_add:
          - ALL
        privileged: true

现在,当我将 mount.cifs 执行到我的容器中时,使用 root 用户我会收到以下消息:

mount error(13): Permission denied

是否可以像这样安装到容器中?

【问题讨论】:

  • 通常您不会直接在容器内运行 mount(8) 或任何其他命令。如果你需要安装一些东西,你通常会使用 Docker 的卷系统。 Docker 文档有an example of setting up a CIFS-backed volume。话虽如此,这似乎并不是一个面向编程的问题,而像Unix & Linux SE 这样的问题可能更合适。

标签: docker docker-compose centos dockerfile mount


【解决方案1】:

我指定我要实现的cifs挂载不是朝向容器的宿主机,而是朝向网络空间

我尝试像这样在 docker-compose 中创建一个卷:

services:
    app:
        image: XXXXX
        ....
        volumes:            
           - shared_data:/home/xxxx/DATA
        cap_add:
          - ALL
        privileged: true

volumes:
  shared_data:
    driver_opts:
      type: cifs
      o: "username=xxxx,password=xxxx"
      device: "//192.168.0.123/DATA/"

但我得到了同样的错误:

ERROR: for XXX Cannot create container for service app: failed to mount local volume: mount //192.168.0.123/DATA/:/var/lib/docker/volumes/docker_shared_data/_data, data: username=xxx,password=xxx: permission denied 

【讨论】:

    猜你喜欢
    • 2015-03-15
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    相关资源
    最近更新 更多