Как я могу получить открытые порты контейнера Docker?C#

Место общения программистов C#
Ответить
Anonymous
 Как я могу получить открытые порты контейнера Docker?

Сообщение Anonymous »

Я использую Windows 11 и хочу получить открытые порты работающего в данный момент образа Linux ASP.NET Core MVC.
Я попробовал использовать метод 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;
}
Метод GetDockerId возвращает правильный идентификатор Docker, но я все еще не могу проверить контейнер.
URI кажется правильным, поскольку я использую образ контейнера Linux.
Вот шаги для воспроизведения:
В Visual Studio 2022 создайте новый проект MVC 8.0.
Включите поддержку контейнера.
Установите операционную систему контейнера в Linux.
Установите тип сборки контейнера — Dockerfile.
В меню «Отладка» выберите «Контейнер (Dockerfile).»
Изображение

Запустите предоставленный код выше.

Подробнее здесь: https://stackoverflow.com/questions/795 ... -container
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»