Acessando o contêiner Docker de outra máquina em uma rede interna

1
Estou tentando executar um aplicativo core asp.net a partir de um pi raspberry usando o docker, acho que tenho as partes principais para baixo. Eu tenho um repositório no github que é um projeto simplista asp.net core. Eu configurei uma conta na nuvem docker que é criada toda vez que eu envio para o repositório do github.

Eu tenho o docker puxando meu repositório para o meu pi:

Eucorroocomando:%código%eeupossoverqueestáemexecução:

MasquandoeuvouparaoendereçoIPdomeupinaporta8080,entãoeureceboisso:

Quandopesquiseiporessapessoa,sugeriadicionaressassinalizações(quetenteieconseguiosmesmosresultados:

  • adicionando--network=hostaocomandodockerrun
  • adicionando-oaocomandodockerrun
  • AdicionandooExpose80aoarquivododocker

Achoque,nestemomento,estouperdendoumpoucocomoacessaressacoisa.Adocumentaçãododockersugereaexecução

'dockerinspect-f"{{ .NetworkSettings.Networks.nat.IPAddress }}" myapp'

Se eu estiver usando os contêineres do Windows 10 Nano, que não acredito que esteja usando, mas quando executo esse comando, recebo um retumbante docker run -d -p 8080:80 joro550/radiusnet --network=host

Cortá-lo de volta para <no value> me dá um endereço IP diferente do meu endereço ip interno ips, que eu tentei na porta 8080 e obtive o mesmo resultado

Fazer uma ondulação em ambos os endereços me dá o mesmo resultado de conexão recusada:

Esteéomeuarquivodockerparatodososinteressados:

FROMmicrosoft/aspnetcore-build:2.0ASbuild-envWORKDIR/app#copycsprojandrestoreasdistinctlayersCOPY/src./RUNdotnetrestore#copyeverythingelseandbuildCOPY../RUNdotnetpublish-cRelease-oout-rlinux-arm#buildruntimeimageFROMmicrosoft/dotnet:2.0.0-runtime-stretch-arm32v7WORKDIR/appCOPY--from=build-env/app/src/RadiusNet.Web/out.EXPOSE80ENTRYPOINT["dotnet", "RadiusNet.Web.dll"]

Se mais alguma informação for necessária, por favor, pergunte, eu sou muito novo no Docker, então eu fiz um pouco de conhecimento da minha situação atual.

Link para o projeto do github (se necessário): link

Qualquer ajuda - neste momento será muito apreciada

    
por Mark Davies 06.02.2018 / 21:06

1 resposta

2

Algumas observações primeiro

  • no Dockerfile, "EXPOSE 80" é usado pelo "docker run -P", "publish all"
  • não adianta publicar uma porta que a janela de encaixe não está atendendo (por exemplo, "-p 8000: 80" quando um serviço está sendo executado na porta 5000

As portas de escuta são informadas por "docker port", mas não garantem que serão atendidas.

# docker run --name radiusnet -p 8001-8009:5000/tcp  radiusnet
Hosting environment: Production
Content root path: /app
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

# docker port radiusnet
5000/tcp -> 0.0.0.0:8001

A prova do pudim ...

# wget -O /tmp/test.html  http://localhost:8001/
--2018-02-08 16:22:46--  http://localhost:8001/
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:8001... connected.
HTTP request sent, awaiting response... 

Se isso falhar, as portas erradas foram publicadas.

Quando iniciado com "- host de rede", "porta de encaixe" pode não reportar nada, enquanto a janela de encaixe está atendendo bem. "lsof" pode ajudar.

# docker run --name radiusnet --network host  radiusnet
Hosting environment: Production
Content root path: /app
Now listening on: http://localhost:5000

# docker port radiusnet 

# ps -ef | grep dotnet
root       540 27973  0 16:46 pts/2    00:00:00 grep dotnet
root     32452 32437  7 16:37 ?        00:00:43 dotnet RadiusNet.Web.dll

# lsof -Pn -p 32452 | grep LISTEN
dotnet  32452 root  368u     IPv4     106845      0t0    TCP 127.0.0.1:5000 (LISTEN)
dotnet  32452 root  383u     IPv6     106854      0t0    TCP [::1]:5000 (LISTEN)

# wget -O /tmp/test.html  http://localhost:5000/       
--2018-02-08 16:56:27--  http://localhost:5000/
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:5000... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘/tmp/test.html’

Tudo está bem quando acaba bem.

    
por 08.02.2018 / 16:58