Docker no puede acceder al servidor web en el host

Estoy tratando de configurar pythons django dentro de un entorno dockerizado

Dockerfile

FROM python:3.5-slimENV PYTHONUNBUFFERED 1RUN mkdir /codeRUN pip install --upgrade pipWORKDIR /codeADD requirements.txt /code/RUN pip install -r requirements.txtADD . /code/EXPOSE 8000

Construyo esto para django-app.

docker-compose.yml

django:  container_name: django  image: django-app:latest  ports:    - "8000:8000"  volumes:    - ./config/startup.sh:/startup.sh    - ./app:/code  command: /bin/sh /startup.sh

startup.sh

#!/bin/shcd /codedjango-admin.py startproject djagentoecho "Creating Project djagento"cd djagentopython manage.py runserver

Estoy usando ubuntu 14.04 LTS como mi sistema host

docker exec -it django bash $curl 127.0.0.1:8000 es exitoso.

Obtengo la IP de mi contenedor con docker inspect django

    "Gateway": "172.17.0.1",    "IPAddress": "172.17.0.2"

Pero cuando se trata de curl 172.17.0.1:8000 o curl 172.17.0.2:8000 o curl 127.0.0.1:8000 No puedo obtener nada más que restablecer la conexión

Editar

docker psbaada462ae72        django-app:latest   "/bin/sh /startup.sh"   6 seconds ago       Up 5 seconds        0.0.0.0:8005->8000/tcp   django

*EN otro puerto, el mismo resultado *

CONTAINER ID        IMAGE               COMMAND                 CREATED              STATUS              PORTS                    NAMESa9d99ee563e5        django-app:latest   "/bin/sh /startup.sh"   About a minute ago   Up About a minute   0.0.0.0:8005->8000/tcp   django

Gracias

Para cualquiera que se tropiece con esto, debe ejecutar el servidor django en 0.0.0.0:8000 dentro del contenedor docker, simplemente agregando python django-admin runserver 0.0.0.0:8000 en mi startup.sh arreglado esto para mí

¿Hay algo más en su máquina que use el puerto 8000? Intente cambiar el puerto a 8005 o 9005, etc. en la máquina host. Tiendo a odiar usar el mismo puerto en general solo por la confusión que a veces causa.

En su dockerfile use

ports:   - '8005:8000'

instancia.

Despues:

  • ejecute docker-compose up-d
  • ejecutar docker ps
  • >Compruebe si ve0.0.0.0:8005-8000/tcp para el contenedor en PUERTOS.

A continuación, intente acurrucarse en la IP en el puerto 8005.

Si eso aún no funciona, verifique sus IPTables en su contenedor. ¿Ha bloqueado el puerto 8000 a local solo por accidente?