Использование API C # Docker для запроса механизма докера изнутри контейнера - PullRequest
0 голосов
/ 28 июня 2019

Я только начал рассматривать Docker как способ переноса нашего старого серверного приложения C ++ в контейнер (чтобы мы могли запускать несколько изолированных серверов на одной физической машине).Все прошло нормально (на моем компьютере с Windows 10), я могу подготовить образ и запустить контейнер, и все это работает.Поэтому я подумал, что было бы полезно иметь небольшой REST API внутри контейнера, чтобы внешние клиенты могли узнать информацию о запущенных серверах / контейнерах.Я нашел ac # api

https://github.com/microsoft/Docker.DotNet

, который работает локально с таким кодом

HttpContext.Current.Server.ScriptTimeout = 300;
        DockerClient client = new DockerClientConfiguration(new Uri("npipe://./pipe/docker_engine")).CreateClient();

        IList<ContainerListResponse> containers = await client.Containers.ListContainersAsync(
            new ContainersListParameters()
            {
                Limit = 10,
            });

Итак, я вошел в vs2017, чтобы создать проект webapi,включил поддержку докеров и переместил фрагмент кода в контроллер, чтобы я мог видеть, смогу ли я просмотреть хост, на котором запущен контейнер.К сожалению, команда просто выдает ошибку тайм-аута.Я предполагаю, что должен что-то сделать, чтобы получить доступ к движку докера хоста.Итак, я попытался добавить это в файл docker-compose.yml

version: '3.4'

services:
    serverinfoapp:
    image: ${DOCKER_REGISTRY-}serverinfoapp
    volumes:
        - source: '\\.\pipe\docker_engine'
          target: '\\.\pipe\docker_engine'
          type: npipe
    build:
      context: .\ServerInfoApp
      dockerfile: Dockerfile

, но он все еще не работает.

Я начинающий с Docker, поэтому любая помощь будет принята

С уважением

1 Ответ

0 голосов
/ 08 июля 2019

Пробовал в vs2019, используя версию ядра .net, и, кажется, работает

...