首页 > 解决方案 > 无法从同一台计算机上的 docker 容器连接到 Azure 存储模拟器

问题描述

我在 Visual Studio 2017 中成功对接了一个 .net core 2.2 web api 应用程序。该应用程序的一部分应该将一些数据存储到运行 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 应用程序无法与模拟器通信,尽管有上述配置。这个练习缺少什么?

标签: azuredockerasp.net-corevisual-studio-2017docker-compose

解决方案


据我记得,Azure Storage Emulator绑定在仅限本地的网络配置中,而Docker for Windows在使用Hyper-V的VM中运行。

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

更新

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

希望能帮助到你!


推荐阅读