Docker.Dotnet::试图登记Swarm中的所有节点



我一直在尝试登记docker群中的所有节点,但它引发了一个奇怪的类型转换错误。

以下是我迄今为止所尝试的:

  1. 使用DockerClient对象连接到Docker(使用Docker.DotNet NuGet包(
  2. 制作了一个单独的线程以从异步函数(LoadNodesAsync(获取响应
  3. 尝试使用枚举器遍历响应

以下是完整的代码:

static void Main(string[] args){
while (true)
{
GetNodesList();
Thread.Sleep(5000);
}
}
async static private void GetNodesList(){
try
{
DockerClient Client = new DockerClientConfiguration(
new Uri("npipe://./pipe/docker_engine"))
.CreateClient();
CancellationTokenSource cancelSource = new CancellationTokenSource();
var result = await Client.Swarm.ListNodesAsync(cancelSource.Token);
var enumerator = result.GetEnumerator();
Console.WriteLine(enumerator.Current.ID.ToString());
cancelSource.Cancel();
}
catch (Exception ex)
{
}
}

它在GetNodesList函数内抛出一个异常,其中写有以下行:

var result = await Client.Swarm.ListNodesAsync(cancelSource.Token);

例外:

转换值时出错"MBMxETAPBgNVBAMTCHN3YXJtLWNh";到类型"System.Collections.Generic.IList 1[System.Byte]"。路径"[0].Description.TLSInfo.CertIssuerSubject",第1行,位置1608。

结果对象包含尚未计算

我做错了什么?

事实证明我的方法很好。该问题是由Docker.DotNet库3.125.4版本中的错误引起的。该问题可以通过使用以前版本的库解决,即:3.125.2版本。

最新更新