Не используйте --net=host
. Похоже, что вы просите docker опубликовать порт, так как вы указали -p 27017:27017
опцию, но --net=host
просит Docker отключить все функции изоляции сети, включая публикацию портов.
Docker-for-windows устанавливает небольшую виртуальную машину в гипервизоре, где работает Docker. Ваш --net=host
контейнер в конечном итоге прослушивает интерфейсы этой виртуальной машины. Переадресация сетевых портов Docker-for-windows обращает внимание только на опубликованные порты, поэтому пересылка не происходит.
Если вы выполняете ту же команду без --net=host
, вы должны получить другой результат.
Иногда, если вы пытаетесь запустить контейнерный процесс, а опубликованный порт не работает, это происходит потому, что процесс прослушивает lo0
интерфейс контейнера, а не eth0
интерфейс.
Вот хороший тестовый контейнер для запуска тестирования тестовых портов:
docker run --name testweb -d -p 8989:80 nginx:alpine
После этого вы сможете подключиться к http://127.0.0.1:8989 и увидеть страницу приветствия nginx.