Я запускаю контейнер Docker в фоновом режиме на порту 8000. Я также запускаю приложение Django на порту 8000. Как ни странно, оба работают - я могу получить доступ к Docker приложение в localhost:8000
и приложение Django в 127.0.0.1:8000
.
Я немного покопался, и я считаю, что Docker каким-то образом переназначил localhost, чтобы указать на IP-адрес моего компьютера, а не на адрес обратной связи 127.0.0.1
. Это подтверждается тем, что другие устройства в моей сети могут получить доступ к приложению Docker на моем компьютере через ip_address:8000
, а когда я уничтожаю контейнер, localhost:8000
возвращается к обслуживанию моего приложения Django.
У меня вопрос, как docker сделал это и почему?
Дополнительная информация:
- Запуск
docker ps
показывает отображение порта 0.0.0.0:8000->8000/tcp
как и ожидалось, что, как я полагаю, означает, что порт 8000 моего компьютера сопоставлен с 8000 контейнера. - В моем файле
/etc/hosts
или /private/etc/hosts
нет ничего, объясняющего это поведение. - Хотя у меня включен wifi, и
localhost:8000
и ip_address:8000
обслуживают контейнер, но когда я отключаю мой inte rnet, ip_address:8000
перестает обслуживать контейнер. Если бы Docker переназначил localhost -> IP-адрес устройства, не перестал ли бы localhost:8000
также работать?
Любое объяснение приветствуется.