Назад | Перейти на главную страницу

Доступ к докер-машине на компьютерах в локальной сети

У меня была виртуальная машина с 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, я предлагаю использовать для них мостовой режим.