2016-09-05 12 views
0

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

Используя различные обучающие программы в Интернете я был в состоянии:

  • Запустите апи проекта веб-локально VS успешно
  • Установите .net ядро ​​на моей машине Докер «по умолчанию» (который имеет IP из 192.168.99.100, что я получить, выполнив «Докер-машина инспектировать по умолчанию»)
  • построить Docker изображение, содержащее мой простой веб-интерфейс API с помощью VS
  • Expose порт 5123 на Docker изображение

Моя проблема в том, что даже после последнего шага (который подробно описан в нескольких онлайн-учебниках), я все еще не могу вызвать вызов в веб-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" 
    } 
    } 
} 
+0

Как выглядит конфигурация вашего приложения? – DavidG

+0

Добавлен контент конфигурации в главный вопрос - это только значения по умолчанию, которые были сгенерированы –

+0

Я не эксперт Docker, но разве конфиг не говорит, что IP-адрес равен 172.17.0.11? Так работает 'http: //172.17.0.11 :: 5123/api/values'? – DavidG

ответ

0

Не совсем уверен, почему это работает, но начиная контейнер с «дп 'аргументы установлены:

$ Docker запустить -dp 5123: 5123/TCP --name = DEV-апи имя пользователя/coreclr.web

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

"HostConfig": { 
      "Binds": null, 
      "ContainerIDFile": "", 
      "LogConfig": { 
       "Type": "json-file", 
       "Config": {} 
      }, 
      "NetworkMode": "default", 
      "PortBindings": { 
       "5123/tcp": [ 
        { 
         "HostIp": "", 
         "HostPort": "5123" 
        } 
       ] 
      },