Доступ к веб-API CoreClr, размещенному в Docker

Я пытаюсь выполнить несколько простых сценариев, связанных с запуском приложений на основе ядра.net в контейнере Docker. Я работаю на Windows 10 и использую VS 2015 для Dev. Я установил инструменты Docker VS и Docker-Machine, чтобы позволить мне использовать Docker локально.

Используя различные учебники онлайн, я смог:

  • Запустите проект web api локально из VS успешно
  • Установите ядро ​​.net на мою докер-машину "по умолчанию" (IP-адрес которой равен 192.168.99.100, который я получил, запустив "docker-machine inspect default")
  • Создайте образ докера, содержащий мои простые веб-API, используя VS
  • Выставьте порт 5123 на образ докера

Моя проблема заключается в том, что даже после последнего шага (который подробно описан в нескольких онлайн-уроках) я все еще не могу вызвать вызов веб-API при вводе http://192.168.99.100:5123/api/values в браузер (я получаю сообщение об ошибке "Отказано в соединении").

Конфигурация на моем изображении указывает, что экспозиция порта работала (я удалил некоторые поля, которые имели нулевые значения):

{
        "Id": "675c3aa63600ae3db7fce0353f5e3e42a10a31d436c48b1d7f3b0aff0887f45c",
        "Created": "2016-09-05T16:55:04.917207712Z",
        "Path": "/bin/sh",
        "Args": [
            "-c",
            "dotnet CoreClr.Web.dll"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 10465,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2016-09-05T16:55:05.052990865Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },

        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,            
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "ConsoleSize": [
                69,
                287
            ],
        },
        "GraphDriver": {
            "Name": "aufs",
            "Data": null
        },
        "Mounts": [],
        "Config": {
            "Hostname": "675c3aa63600",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": true,
            "AttachStderr": true,
            "ExposedPorts": {
                "5123/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "DOTNET_VERSION=1.0.0",
                "DOTNET_DOWNLOAD_URL=https://dotnetcli.blob.core.windows.net/dotnet/preview/Binaries/1.0.0/dotnet-debian-x64.1.0.0.tar.gz",
                "ASPNETCORE_URLS=http://*:5123"
            ],
            "Cmd": null,
            "Image": "username/coreclr.web",
            "Volumes": null,
            "WorkingDir": "/app",
            "Entrypoint": [
                "/bin/sh",
                "-c",
                "dotnet CoreClr.Web.dll"
            ],
            "OnBuild": null,
            "Labels": {}
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "509cbf68bb9d642a71ca26380541ceee1c1b86ed886515b52a62e21aecb5ca94",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "5123/tcp": null
            },
            "SandboxKey": "/var/run/docker/netns/509cbf68bb9d",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "16e381f947d84f37040a71e81a213e31014ef8327176a2e18fab12da2c429b5c",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.11",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:0b",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "1eb481804e0a0f02ddaeca8e0868225b4d76795066fd0aedf950c83f8ee377fd",
                    "EndpointID": "16e381f947d84f37040a71e81a213e31014ef8327176a2e18fab12da2c429b5c",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.11",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:0b"
                }
            }
        }
    }

Это насколько уроки / примеры, которые я нашел в сети, пошли, и у них не было этой проблемы.

Любая помощь или указатели приветствуются.

Спасибо

редактировать: добавлен web.config

?xml version="1.0" encoding="utf-8"?>
<configuration>

  <!--
    Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
  -->

  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
    </handlers>
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
  </system.webServer>
</configuration>

с настройками приложений:

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
  }
}

1 ответ

Не совсем уверен, почему это работает, но запуск контейнера с набором аргументов 'dp' делает:

$ docker run -dp 5123: 5123 / tcp --name = имя пользователя dev-api /coreclr.web

Разница в конфигурации контейнера заключается в том, что привязки портов в узле HostConfig установлены

"HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {
                "5123/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "5123"
                    }
                ]
            },
Другие вопросы по тегам