Docker не может получить доступ к веб-серверу на хосте

Я пытаюсь настроить pythons django внутри докеризованной среды

Файл 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

Я строю это для того, чтобы 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

Я использую ubuntu 14.04 LTS в качестве своей хост-системы

docker exec -it django bash $curl 127.0.0.1:8000 является успешным.

Я получаю ip-адрес своего контейнера с помощью docker inspect django

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

Но при попытке curl 172.17.0.1:8000 или curl 172.17.0.2:8000 или скручиваться 127.0.0.1:8000 Я не могу получить ничего, кроме сброса соединения

Редактировать

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

*НА другом порту тот же результат *

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

Спасибо

Для тех, кто столкнется с этим, вы должны запустить сервер django на 0.0.0.0: 8000 внутри контейнера docker, просто добавив python django-admin runserver 0.0.0.0:8000 в моем startup.sh исправил это для меня

Есть ли что-нибудь еще на вашем компьютере, использующем порт 8000? Попробуйте изменить порт на 8005 или 9005 и т.д. На главном компьютере. Я, как правило, ненавижу использовать один и тот же порт в целом только из-за путаницы, которую он иногда вызывает.

В вашем dockerfile используйте

ports:   - '8005:8000'

пример.

После:

  • запустите docker-compose up -d
  • запустите docker ps
  • >Посмотрите, видите ли вы0.0.0.0:8005-8000/tcp для контейнера в разделе ПОРТЫ.

Затем попробуйте выполнить скручивание по IP-адресу на порту 8005.

Если это все еще не работает, проверьте свои IPTables в вашем контейнере. Вы заблокировали порт 8000 на локальный только случайно?