【问题标题】:Unable to connect to Azure Storage Emulator from a docker container on the same machine无法从同一台计算机上的 docker 容器连接到 Azure 存储模拟器
【发布时间】:2019-05-19 12:19:50
【问题描述】:

我在 Visual Studio 2017 中成功对 .net core 2.2 web api 应用程序进行了 docker 化。该应用程序的一部分应该将一些数据存储到运行 VS 2017 的同一台机器上运行的 Azure 存储模拟器。模拟器的配置如下:

<services>
   <service name="Blob" url="http://127.0.0.1:10000/"/>
   <service name="Queue" url="http://127.0.0.1:10001/"/>
   <service name="Table" url="http://127.0.0.1:10002/"/>
</services>

docker-compose.yml 文件具有以下网络定义:

build:
      context: .
      dockerfile: MyWebApi\Dockerfile
      network: host

我可以通过 https://127.0.0.1:44315/api/values

查看 Web api 的输出

根据我的理解,“主机”网络配置通过将容器的主机 IP 地址分配给容器来完成其工作,这到目前为止看起来不错。问题是为什么容器中的 dockerized Web 应用程序无法与模拟器通信,尽管有上述配置。本练习缺少什么?

【问题讨论】:

    标签: azure docker asp.net-core visual-studio-2017 docker-compose


    【解决方案1】:

    据我所知,Azure Storage Emulator 绑定在仅限本地的网络配置中,Docker for WindowsVM 中运行> 使用 Hyper-V

    恐怕解决方案是在开发时使用microsoft/azure-storage-emulator 图像并将您的API 指向它。

    更新

    您也可以尝试使用host.docker.internal 而不是127.0.0.1 作为连接字符串中的主机(这也可能让您使用在主机上运行的模拟器而不是容器)。

    希望对你有帮助!

    【讨论】:

    • 感谢伊泰的回复。我安装了您提到的 docker 映像,应用程序仍然无法通过端口# 10000 或其他模拟器的端口与 127.0.0.1 上的模拟器通信。连接字符串根据 Microsoft 在 docker 页面上概述的内容。我可以从 Windows 命令提示符远程登录到模拟器,但不确定为什么应用程序无法存储在模拟存储中。
    猜你喜欢
    • 2020-10-20
    • 2016-09-19
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多