C# 无法从docker网络外部连接到容器中的思洛存储器

C# 无法从docker网络外部连接到容器中的思洛存储器,c#,docker,orleans,C#,Docker,Orleans,我正试图在一个Docker集装箱内设置一个奥尔良筒仓。客户端在开始时不在容器中 我在Linux容器模式下使用Windows上的Docker。 当客户机也在容器中时,我可以让客户机和思洛存储器都运行和连接 思洛存储器的配置如下: var builder = new SiloHostBuilder() .Configure<ClusterOptions>(options => {

我正试图在一个Docker集装箱内设置一个奥尔良筒仓。客户端在开始时不在容器中

我在Linux容器模式下使用Windows上的Docker。 当客户机也在容器中时,我可以让客户机和思洛存储器都运行和连接

思洛存储器的配置如下:

var builder = new SiloHostBuilder()
                .Configure<ClusterOptions>(options =>
                {
                    options.ClusterId = "DOCKER-SILO";
                    options.ServiceId = "EZ-DOCKER";
                })
                .UseAdoNetClustering(options =>
                {
                    options.Invariant = "MySql.Data.MySqlClient";
                    options.ConnectionString = "server=XXX;user id=orleans;password='XXX';persistsecurityinfo=True;database=orleans;SslMode=None";
                })
                .Configure<EndpointOptions>(options =>
                {
                    var adressList = Dns.GetHostEntry(Dns.GetHostName()).AddressList;
                    options.AdvertisedIPAddress = adressList.First();
                    options.GatewayPort = 30000);
                    options.SiloPort = 11111);
                })
client = new ClientBuilder()
                .Configure<ClusterOptions>(options =>
                {
                    options.ClusterId = "DOCKER-SILO";
                    options.ServiceId = "EZ-DOCKER";
                })
                .UseStaticClustering(new IPEndPoint(IPAddress.Parse("192.168.0.13"), 30000))
PS C:\XXX> docker run -p 30000:30000 --expose 11111 --add-host host.docker.internal:192.168.0.13 ezorleanssilolinux
Dockerfile非常简单:

FROM mcr.microsoft.com/dotnet/core/runtime:2.1-stretch-slim AS base
WORKDIR /app

FROM base AS final
WORKDIR /app
#COPY --from=publish /app .
COPY ["eZ.Orleans.Silo/publish", "."]
ENTRYPOINT ["dotnet", "eZ.Orleans.Silo.dll"]
当我在客户端中使用
127.0.0.1
作为静态网关ip时,它可以工作。当我使用docker主机拥有的任何其他IP时,我在思洛存储器日志中得到以下错误:

Gateway received unexpected non-proxied connection from *sgn/01111111-1111-1111-1111-111111111111/11111111 at source address 172.17.0.1:38428

为什么在本地主机以外的任何其他地址上尝试时会出现此错误
netstat-n-a
向我显示思洛存储器正在主机上侦听0.0.0.0。

几个小时后,我设法使一切正常,请查看我的思洛存储器代码:

 return new HostBuilder()
                .UseOrleans(builder =>
                {
                    builder
                        .UseDashboard()
                        .UseAdoNetClustering(options =>
                        {
                            options.Invariant = "System.Data.SqlClient";
                            options.ConnectionString = _connectionString;
                        })
                        .Configure<EndpointOptions>(options =>
                        {
                            // Port to use for Silo-to-Silo
                            options.SiloPort = 11111;
                            // Port to use for the gateway
                            options.GatewayPort = 30000;
                            // IP Address to advertise in the cluster
                            options.AdvertisedIPAddress = IPAddress.Parse(GetExternalIpAddress());
                            // The socket used for silo-to-silo will bind to this endpoint
                            options.GatewayListeningEndpoint = new IPEndPoint(IPAddress.Any, 40000);
                            // The socket used by the gateway will bind to this endpoint
                            options.SiloListeningEndpoint = new IPEndPoint(IPAddress.Any, 50000);
                        })
                        .Configure<ClusterOptions>(options =>
                        {
                            options.ClusterId = "ClusterId-ForSign";
                            options.ServiceId = "ServiceId-ForSign";
                        })
                        .ConfigureApplicationParts(parts =>
                        {
                            parts.AddApplicationPart(typeof(UserService).Assembly).WithReferences();
                            parts.AddApplicationPart(typeof(CompanyService).Assembly).WithReferences();
                        });
                })
                .ConfigureServices(services =>
                {
                    services.AddTransient<ICompanyRepository, CompanyRepository>();
                    services.AddTransient<ICompanyService, CompanyService>();
                    services.Configure<ConsoleLifetimeOptions>(options =>
                    {
                        options.SuppressStatusMessages = true;
                    });
                })
                .ConfigureLogging(builder =>
                {
                    builder.AddConsole();
                })
                .RunConsoleAsync();
        }

        private static string GetExternalIpAddress() => new WebClient().DownloadString("https://api.ipify.org");
返回新的HostBuilder()
.UseOrleans(建筑商=>
{
建设者
.UseDashboard()
.UseAdoNetClustering(选项=>
{
options.Invariant=“System.Data.SqlClient”;
options.ConnectionString=\u ConnectionString;
})
.Configure(选项=>
{
//用于思洛存储器到思洛存储器的端口
options.SiloPort=11111;
//用于网关的端口
options.GatewayPort=30000;
//要在群集中播发的IP地址
options.AdvertisedIPAddress=IPAddress.Parse(getExternalPaddress());
//用于思洛存储器到思洛存储器的套接字将绑定到此端点
options.gatewayListingEndpoint=新的IPEndPoint(IPAddress.Any,40000);
//网关使用的套接字将绑定到此端点
options.siloListingEndpoint=新的IPEndPoint(IPAddress.Any,50000);
})
.Configure(选项=>
{
options.ClusterId=“ClusterId ForSign”;
options.ServiceId=“ServiceId ForSign”;
})
.ConfigureApplicationParts(parts=>
{
parts.AddApplicationPart(typeof(UserService.Assembly).WithReferences();
parts.AddApplicationPart(typeof(CompanyService).Assembly).WithReferences();
});
})
.ConfigureServices(服务=>
{
services.AddTransient();
services.AddTransient();
配置(选项=>
{
options.SuppressStatusMessages=true;
});
})
.ConfigureLogging(生成器=>
{
builder.AddConsole();
})
.RunConsoleAsync();
}
私有静态字符串GetExternalPaddress()=>new WebClient()。下载字符串(“https://api.ipify.org");

是否可以将您的部分/全部Dockerfile包含在上面?我也有同样的问题,您知道发生了什么吗?