Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Docker for Windows(Windows 10)中装载网络卷_Windows_Docker - Fatal编程技术网

如何在Docker for Windows(Windows 10)中装载网络卷

如何在Docker for Windows(Windows 10)中装载网络卷,windows,docker,Windows,Docker,我们正在Docker中创建一个标准的数据科学映像,以帮助我们的团队维护一个一致的环境。为了使其对我们有用,我们需要容器对我们公司的网络具有读/写访问权限。如何将网络驱动器装入docker容器 下面是我尝试使用Docker Hub的rocker/rstudio图像的内容: 这项工作: docker run-d-p 8787:8787-v//c/users/{insert user}:/home/rstudio/foobar-rocker/rstudio 如果p是网络驱动器的映射位置,则此操作不起作

我们正在Docker中创建一个标准的数据科学映像,以帮助我们的团队维护一个一致的环境。为了使其对我们有用,我们需要容器对我们公司的网络具有读/写访问权限。如何将网络驱动器装入docker容器

下面是我尝试使用Docker Hub的rocker/rstudio图像的内容:

这项工作:

docker run-d-p 8787:8787-v//c/users/{insert user}:/home/rstudio/foobar-rocker/rstudio

如果p是网络驱动器的映射位置,则此操作不起作用: docker run-d-p 8787:8787-v//p:/home/rstudio/foobar-rocker/rstudio

这也不起作用: docker run-d-p 8787:8787-v//10.1.11./项目:/home/rstudio/foobar-rocker/rstudio

有什么建议吗


我对Docker比较陌生,所以如果我不太清楚,请告诉我。

我知道这是一个比较老的方法,但为了其他人的利益,这是通常对我有效的方法。供使用-我们使用windows文件服务器,因此使用cifs UTIL来映射驱动器。我假设下面的说明也可以应用于nfs或其他任何东西

首先-需要以特权模式运行容器,以便您可以在容器内装载远程文件夹-可能不需要dns标志 docker运行-dns-p 8000:80-特权-it

现在,假设centos具有cifs,并且是容器中的根用户-跳到容器中并运行:

如果尚未安装,请安装cifs UTIL yum-y安装cifs utils

创建要映射的本地目录 mkdir/mnt/my mounted文件夹

准备一个包含用户名和凭据的文件 echo用户名=>~/.smb凭据 回显密码=>~/.smb凭据

映射远程文件夹 mount-t cifs-o iocharset=utf8,credentials=/root/.smbceredentials,file\u mode=0777,dir\u mode=0777,uid=1000,gid=1000,cache=strict

现在你应该有权限了


希望这能有所帮助。

我有相同的场景,但适用于windows docker映像。我已经在windows server 2016上安装了docker EE。我已将外部SMB共享作为网络驱动器安装在“Z:”上,并在执行docker run命令时尝试使用相同的驱动器。但是docker容器找不到路径“Z:”

尝试了以下选项,但均无效。请告知:

选项1:-卷Z:\repository:C:\repository

选项2:-装载类型=绑定,源=Z:\repository,目标=C:\repository

选项3:-卷“\\IP远程服务器SMB\Shared Storage\repository:C:\repository”

选项4:-卷“\\FQDN远程服务器SMB\Shared Storage\repository:C:\repository”


另外,特权模式在Windows上似乎不起作用。

我最近几天一直在搜索解决方案,但我只找到一个可行的解决方案

我在ubuntu虚拟机上运行docker容器,并在运行windows 10的同一网络上的其他主机上映射一个文件夹,但我几乎可以肯定,容器运行的操作系统没有问题,因为映射来自容器本身,所以我认为此解决方案在任何情况下都应该有效

让我们来编码

首先,您应该创建卷

然后必须从图像运行容器

在此之后,一个容器正在运行并分配了卷, 并映射到。 您在任何文件夹中创建了一些文件,这些文件将被复制 自动切换到另一个

如果有人想从docker那里得到这个,我就离开 这里


希望我能帮忙

我会写下我的决定。我有一个概要。共享文件夹使用smb协议。 我设法用下面的方法把它连接起来。最重要的是编写版本1.0 vers=1.0。没有它就不行!我花了两天时间试图解决这个问题

version: "3"

services:
  redis:
    image: redis
    restart: always
    container_name: 'redis'
    command: redis-server
    ports:
      - '6379:6379'
    environment:
      TZ: "Europe/Moscow"

  celery:
    build:
      context: .
      dockerfile: celery.dockerfile
    container_name: 'celery'
    command: celery --broker redis://redis:6379 --result-backend redis://redis:6379 --app worker.celery_worker   worker --loglevel info
    privileged: true
    environment:
      TZ: "Europe/Moscow"
    volumes:
      - .:/code
      - nas:/mnt/nas
    links:
      - redis
    depends_on:
      - redis

volumes:
  nas:
    driver: local
    driver_opts:
      type: cifs
      o: username=user,password=pass,**vers=1.0**
      device: "//192.168.10.10/main"

您是否尝试将远程驱动器装载到本地目录?然后您可以在docker run命令中使用local dir。谢谢!您能帮助我理解这与将网络卷映射到本地驱动器有什么不同吗。在上面的例子中,网络驱动器是P:,但Docker不会识别它。没有区别。我只是错过了你问题中的那一部分。从我在进一步阅读中可以看出,Docker不支持映射驱动器。谢谢-这也是我得到的。希望有人能想出一个解决方案。只是给大家一个快速更新。据我们所知,这实际上是不可能的。因此,我们已经通过Linux机器部署了我们的容器来解决这个问题。其他人可以证明这个解决方案的成功吗?是的,它可以工作,但我必须将用户名设置为username=user@domain.com
 docker run 
 --name <desired-container-name> 
 -v <volume-name>:/<path-inside-container>
 <image-name>
services:
  <image-name>:
    build: 
      context: .
    container_name: <desired-container-name> 
    volumes:
       -  <volume-name>:/<path-inside-container>
    ...

volumes:
  <volume-name>:
    driver: local
    driver_opts: 
      type: cifs 
      device: //<network-device-ip-folder>
      o: "user=<your-user>,password=<your-pw>"
version: "3"

services:
  redis:
    image: redis
    restart: always
    container_name: 'redis'
    command: redis-server
    ports:
      - '6379:6379'
    environment:
      TZ: "Europe/Moscow"

  celery:
    build:
      context: .
      dockerfile: celery.dockerfile
    container_name: 'celery'
    command: celery --broker redis://redis:6379 --result-backend redis://redis:6379 --app worker.celery_worker   worker --loglevel info
    privileged: true
    environment:
      TZ: "Europe/Moscow"
    volumes:
      - .:/code
      - nas:/mnt/nas
    links:
      - redis
    depends_on:
      - redis

volumes:
  nas:
    driver: local
    driver_opts:
      type: cifs
      o: username=user,password=pass,**vers=1.0**
      device: "//192.168.10.10/main"