【问题标题】:How can a docker container get full access to a windows share without mounting the share in the host OS?docker 容器如何在不将共享安装在主机操作系统中的情况下获得对 Windows 共享的完全访问权限?
【发布时间】:2019-02-08 20:27:03
【问题描述】:

我在 linux 上使用 docker,我希望我的容器能够完全访问具有以下结构的 Windows 共享(名为 myshare 并设置了适当的权限):

d:\myshare
       foo
       bar

作为测试,我已验证将以下内容放入 /etc/fstab 将创建一个允许我 RW 到 Windows 共享的挂载。

//172.16.68.6/myshare  /home/me/foo  cifs username=myuser,password=mypass,domain=172.16.68.6,uid=1000

我希望能够在 docker 中创建一个卷,而不是使用 /etc/fstab,以便我可以在我的 docker-compose.yml 中执行以下操作

volumes:
  - /myshare/foo:/foo

理想情况下,我希望能够创建一个卷,然后只需附加目录名称(就像我在上面使用foo 所做的那样),这样我就不必创建多个卷。但到目前为止,我什至无法在连接到 Windows 共享的 docker 主机上创建挂载。我什至不知道如何“窥视”卷内。我试过使用 portainer,但它告诉我没有使用音量。

我如何创建这个卷并使用它(最好在 docker-compose 中)?

【问题讨论】:

    标签: docker docker-compose docker-volume


    【解决方案1】:

    我认为答案是使用 docker volume 插件。https://docs.docker.com/engine/extend/plugins_volume/

    最好已经存在一个。谷歌它,找到它,并按照它的说明进行操作。你应该能够做到。查看https://docs.docker.com/engine/extend/legacy_plugins/ 寻找可能的候选人。

    您也可以编写自己的 docker 卷插件。一定要发布它以造福他人。这需要相当多的技能,所以可能不实用。

    【讨论】:

      【解决方案2】:

      这是为我工作的 docker-compose.yml。必须使用路径中的ip地址:

      version: '3.3'
      services:
        my-service:
          build:
            context: .
            dockerfile: Dockerfile
          volumes:
            - logs:/mnt/logs
      
      volumes:
        spark_logs:
          driver: local
          driver_opts:
            type: cifs
            device: "//10.1.1.7/path/prd/sist/log"
            o: username=${USER},password=${PASS},file_mode=0444,dir_mode=0444
      
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-21
        • 1970-01-01
        • 1970-01-01
        • 2013-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多