首页 > 解决方案 > 使用 Docker Compose 在 docker windows 容器中访问网络共享的最佳选择

问题描述

我是 docker 新手,所以请容忍我的幼稚问题。我们正在尝试在 Windows 容器中托管一个 dot net 应用程序。我们成功地将应用程序托管在容器中。但是,应用程序正在访问网络共享,如 \\machinename\abc。我们尝试创建“NFS”类型的卷,但在 Windows 容器中看起来效果不佳(如何使用 docker compose v3 在容器中直接挂载 NFS 共享/卷)。

volumes:
  example:
    driver: local
    driver_opts:
      type: "nfs"
      o: "addr=172.27.11.1,nolock,soft,rw"
      device: ":/dockerdata"

谁能指导在 docker windows 容器中访问网络共享的选项是什么?非常感谢您的帮助。

标签: .netdockerdocker-composewindows-container

解决方案


这是一个组合文件(带有两个容器,其中“服务器”需要来自网络共享的数据),用于 Windows 上的 docker 访问远程 Windows 网络共享上的卷。“服务器”容器目录 /data 映射到 uc3data,远程共享“\\192.168.49.53\myshare$\UC3_DATA”

version: '3.7'
volumes:
  uc3data:
    driver_opts:
        type: cifs
        o: "username=${USERNAME},password=${USERPASSWORD}"
        device: "//192.168.49.53/myshare$$/UC3_DATA"
services:
    server:
        build:
            dockerfile: Dockerfile
            context: ./docker-uc3-multi
        volumes:
            - uc3data:/data
        hostname: uc3multi
        ports:
          - '5000:5000'

    client:
        restart: always
        build:
            dockerfile: Dockerfile
            context: ./docker-php
        ports:
          - '8080:80'

笔记:

  • USERPASSWORD 和 USERNAME 存储在 .env 文件中。
  • 我使用 IP 地址而不是远程文件服务器的名称。我的设置中的名称解析失败。
  • 注意 $$ 以转义共享名称中的 $

推荐阅读