Estoy probando Docker con un proyecto básico de .NET core. Construyo una imagen a partir de este archivo docker:
FROM microsoft/dotnet:latest COPY . /app WORKDIR /app/API RUN ["dotnet", "restore"] RUN ["dotnet", "build"] EXPOSE 5000/tcp CMD ["dotnet", "run", "--server.urls", "http://*:5000"]Lo ejecuto y va perfectamente. Ahora el único problema es, ¿en qué IP se está ejecutando?
¡Estoy ejecutando Docker en Windows!
Saludos
Ya está exponiendo el puerto internamente, por lo que lo único que puedo sugerir es verificar que también está abriendo el puerto al iniciar su imagen:
docker run -it -p 5000:5000 <imagename>
Esto abrirá el puerto 5000 dentro de la instancia al puerto 5000 en su máquina local y luego debería estar accesible en 127.0.0.1:5000 o localhost:5000 .
También debe asegurarse de aceptar cualquier nombre de host dentro de Main() en Program.cs con .UseUrls("http://*:5000/") en su WebHostBuilder .
Tuve algunos problemas con la ejecución de contenedores de Linux creados para dotnet asp.net core 2 en docker para Windows.
El comando que estaba usando para ejecutar mi contenedor era:
docker run -it --rm -p 3394:3394 --name <name> <container>Pude bombardear el contenedor y verificar que la aplicación estaba escuchando y devolviendo resultados.
Sin embargo, tratar de acceder a la aplicación desde mi máquina en el puerto 3394 no funcionaría para 127.0.0.1 , localhost o la IP NAT de mi máquina en la red.
Sin embargo, ejecutar este comando proporciona la dirección IP asignada por el host de la ventana acoplable:
docker inspect -f "{{ .NetworkSettings.IPAddress }}" <name> En mi caso la IP fue 172.17.0.2 . Sin embargo, el acceso a 172.17.0.2:3394 aún no funcionó.
La última pieza necesaria era ejecutar lo siguiente en un indicador de dos elevado:
route /P add 172.0.0.0 MASK 255.0.0.0 10.0.75.2 Esto agregó una ruta para que mi máquina no buscara la dirección a través de mi WAN, que se diagnosticó a través de tracert .
El crédito va a https://github.com/docker/for-win/issues/221
Pude conectarme al puerto del contenedor expuesto a través de la dirección IP de la máquina acoplable:
docker-machine ip En mi caso fue 192.168.99.100
Entonces, para mi contenedor mysql ( docker run -d -p 3306:33060 -e MYSQL_ROOT_PASSWORD=password mysql:5.7 ) Entonces pude conectarme a través de 192.168.99.100:33060