如何在Docker for Windows(Windows 10)中装载网络卷
我们正在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 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比较陌生,所以如果我不太清楚,请告诉我。我知道这是一个比较老的方法,但为了其他人的利益,这是通常对我有效的方法。供使用-我们使用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"