У меня была виртуальная машина с Ubuntu, которая установлена внутри хоста Windows 10 и доступна для всех компьютеров в локальной сети, используя ее IP-адрес. Внутри Ubuntu я запускаю контейнеры докеров на машине-докере. И машина Docker доступна только в системе Ubuntu. Архитектуру можно найти по предоставленной ссылке на изображение.
Архитектура LAN-UbuntuVM-Docker-Machine https://ibb.co/LzTbFzL
Теперь я запускаю док-контейнер внутри докер-машины.
docker run -d -p 8000:80 nginx
Которые привязывают порты 8000 Docker Machine к контейнерам 80 и на машине Ubuntu я могу получить доступ к контейнеру с помощью http://192.168.99.100:8000 из браузера на машине Ubuntu.
Я добавил запись в файл / etc / hosts, чтобы дать имя домена докер-машине
...
192.168.99.100 docker.devv
...
Итак, теперь я могу получить доступ к контейнеру докеров с помощью http: //docker.devv: 8000 / внутри виртуальной машины Ubuntu.
Теперь я хочу получить доступ к контейнерам докеров с хост-машины Windows, используя доменное имя, например "http: //docker.devv: 8000 /"
Я попытался добавить ips виртуальной машины Ubuntu с именем хоста «docker.devv» в файл winodws etc \ host, но он не работает.
Кто-нибудь может с этим помочь?
Я бы указал на разницу между -p 8000:80
и http://docker.devv:8080/
?
8000 и 8080
РЕДАКТИРОВАТЬ:
К 192.168.99.100 не следует обращаться напрямую из Windows, если некоторые правила маршрутизации не добавлены на компьютеры с Windows и Ubuntu.
Поэтому, пожалуйста, проверьте, можете ли вы получить доступ к IP-адресу машины Ubuntu через открытый порт с машины Windows. Если это сработает, нам нужно исправить проблему с разрешением домена. Если нет, проверьте, как указано в комментарии Ганеша Катиресана, если вы используете мостовую сеть, и проверьте, активен ли брандмауэр.
РЕДАКТИРОВАТЬ:
Если вы используете сетевой режим хоста для контейнера, все будет по-другому: https://docs.docker.com/network/host/
Примечание. Учитывая, что контейнер не имеет собственного IP-адреса при использовании сети в режиме хоста, сопоставление портов не действует, а параметры -p, --publish, -P и --publish-all игнорируются, вместо этого выдает предупреждение.
Если вы используете сетевой режим хоста для контейнера, сетевой стек этого контейнера не изолирован от хоста Docker (контейнер разделяет сетевое пространство имен хоста), и контейнер не получает свой собственный IP-адрес. Например, если вы запускаете контейнер, который привязывается к порту 80, и вы используете сеть хоста, приложение контейнера будет доступно через порт 80 на IP-адресе хоста.
Итак, попробуйте получить доступ к ubuntu через порт 80 из Windows.
РЕДАКТИРОВАТЬ:
Поскольку вы можете получить доступ к порту 80 (если никакая другая HTTP-служба не отвечает в ubuntu), проблема заключалась в сетевом режиме хоста в контейнере, который запрещает работу флага -p, поскольку контейнер использует тот же IP-адрес хоста.
Вы можете оставить это так, но если вы планируете добавить другие контейнеры и вам нужно использовать для них тот же порт HTTP 80, я предлагаю использовать для них мостовой режим.