Не удается подключиться к серверу, работающему внутри контейнера Docker (Docker для Mac)

У меня есть контейнер докеров, работающий в моей системе, который я начал с помощью этой команды:

docker run -it  -v ~/some/dir -p 8000:80  3cce3211b735 bash

Теперь docker ps перечисляет это:

    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                             NAMES
44de7549d38e        3cce3211b735        "bash"              14 minutes ago      Up 14 minutes       22/tcp, 443/tcp, 8082/tcp, 0.0.0.0:8000->80/tcp   hardcore_engelbart

Внутри контейнера я запускаю свое приложение django с помощью команды: python manage.py runserver 80

Но я не могу просмотреть страницу при использовании любого из них:

1.localhost:8000

2.127.0.0.1:8000

Я понимаю, что мой порт 8000 сопоставлен с портом 80 в контейнере. Но почему я не могу получить к нему доступ. Я использую Docker для Mac, а не Docker Toolbox. Пожалуйста, помогите и прокомментируйте, если вам нужна дополнительная информация.


person Sourav Prem    schedule 20.05.2017    source источник
comment
И подключайтесь, используя только localhost   -  person doru    schedule 20.05.2017
comment
@doru сопоставление не было проблемой. Спасибо за вашу помощь в любом случае. Я написал ответ, который сработал для меня.   -  person Sourav Prem    schedule 21.05.2017


Ответы (1)


Итак, я нашел решение своей проблемы. Проблема была не в сопоставлении портов докера. Фактическая проблема заключается в этой строке:

python manage.py runserver 80

Это запустит сервер на 127.0.0.1:80. Локальный хост внутри док-контейнера не является локальным хостом на вашем компьютере. Таким образом, решение запускает сервер с помощью этой команды:

python manage.py runserver 0.0.0.0:80

После этого я смог получить доступ к веб-странице. Если вы столкнулись с той же проблемой, когда не можете подключиться к серверу django, работающему внутри вашего контейнера докеров, попробуйте запустить сервер на 0.0.0.0:port. Вы сможете получить к нему доступ в своем браузере, используя localhost:port . Надеюсь, это поможет кому-то.

person Sourav Prem    schedule 21.05.2017
comment
к сожалению, с django 3.1.x 0.0.0.0 или 127.0.0.1 не работают, пробовал с daphne и обычным сервером запуска python manage.py - person Gajendra D Ambi; 06.01.2021