无法从同一台计算机上的Docker容器连接到Azure存储模拟器

Ara*_*ash 2 azure docker docker-compose asp.net-core visual-studio-2017

我在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>
Run Code Online (Sandbox Code Playgroud)

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

build:
      context: .
      dockerfile: MyWebApi\Dockerfile
      network: host
Run Code Online (Sandbox Code Playgroud)

我可以在https://127.0.0.1:44315/api/values查看Web api的输出

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

Ita*_*cer 6

据我所知,Azure存储模拟器绑定在仅限本地的网络配置中,Windows版Docker在使用Hyper-VVM中运行。

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

更新资料

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

希望能帮助到你!