in tool/TeamCity.Docker/DockerClientFactory.cs [47:84]
public async Task<IDockerClient> Create()
{
DockerClient client = null;
var connected = false;
using (_logger.CreateBlock("Connect"))
{
var errors = new List<Exception>();
var endpoints = _endpoints.ToList();
foreach (var endpoint in endpoints)
{
try
{
client = new DockerClientConfiguration(endpoint).CreateClient();
_logger.Log($"Connecting to \"{endpoint}\".");
var info = await client.System.GetSystemInfoAsync(CancellationToken.None);
_logger.Log($"Connected to \"{info.Name}\" {info.OSType} {info.Architecture}.");
connected = true;
break;
}
catch (Exception ex)
{
errors.Add(ex);
}
}
if (client == null || !connected)
{
foreach (var error in errors)
{
_logger.Log(error, _options.VerboseMode);
}
throw new InvalidOperationException("The docker engine connection error.");
}
}
return client;
}