Я попробовал использовать метод InspectContainerAsync из библиотеки Docker.DotNet, но он выдает ошибку System.Net.Http.HttpRequestException: «Ошибка подключения».
System.Net.Http.HttpRequestException: «Ошибка подключения»
SocketException: невозможно назначить запрошенный адрес
Код: Выделить всё
public static async Task GetExposedPorts()
{
var portsList = new List();
var dockerClient = new DockerClientConfiguration(new Uri("unix:///var/run/docker.sock")).CreateClient();
var dockerId = GetDockerId();
var containerInspect = await dockerClient.Containers.InspectContainerAsync(dockerId);
foreach (var port in containerInspect.NetworkSettings.Ports)
portsList.Add(int.Parse(port.Key));
return portsList;
}
static string GetDockerId()
{
var containerId = string.Empty;
string cgroupFile = "/proc/self/cgroup";
if (System.IO.File.Exists(cgroupFile))
{
string[] lines = System.IO.File.ReadAllLines(cgroupFile);
foreach (string line in lines)
{
if (line.Contains("docker"))
{
string[] parts = line.Split('/');
containerId = parts[^1];
}
}
}
return containerId;
}
URI кажется правильным, поскольку я использую образ контейнера Linux.
Вот шаги для воспроизведения:
В Visual Studio 2022 создайте новый проект MVC 8.0.
Включите поддержку контейнера.
Установите операционную систему контейнера в Linux.
Установите тип сборки контейнера — Dockerfile.
В меню «Отладка» выберите «Контейнер (Dockerfile).»

Запустите предоставленный код выше.
Подробнее здесь: https://stackoverflow.com/questions/795 ... -container
Мобильная версия