Доступ к устройствам в локальной сети при запуске Docker для Mac

В моей сети есть несколько интеллектуальных устройств Wi-Fi, которые я вижу из сценария на своем Mac. Но при запуске того же скрипта из контейнера Docker эти устройства не видны.

Я предполагаю, что это связано с неспособностью Docker для Mac подключиться к сети хоста с помощью --network host или network_mode: host. Я также предполагаю, что этой проблемы не будет на машине с Linux, но у меня нет такой для проверки.

Каков обходной путь?

Редактировать:

Подтверждено, что это работало нормально при работе внутри виртуальной коробки Ubuntu, но мне действительно не нужно было разрабатывать внутри нее.


person benwiz    schedule 18.09.2017    source источник


Ответы (2)


Если вы запустите контейнер с сетевой опцией в качестве хоста, контейнер будет совместно использовать сетевой стек хоста. Таким образом, любое устройство, доступное с вашего хоста, должно быть доступно контейнеру.

docker run --network host ...
person yamenk    schedule 18.09.2017
comment
Спасибо, я попробую. При использовании docker-compose и установке network_mode: host для службы это не сработает. Это ожидается? - person benwiz; 18.09.2017
comment
После дальнейших исследований я совершенно уверен, что это не решение из-за того, как работает Docker для Mac. - person benwiz; 18.09.2017

Добавление контейнеров в сеть позволит им взаимодействовать друг с другом, но если вы хотите получить доступ к другим службам, работающим на хосте, используйте host.docker.internal (начиная с 18.03+). Мне пришлось сделать то же самое в настройке Mac Mini для доступа к внешней службе. [https://docs.docker.com/docker-for-mac/networking/]

Если вам нужно получить доступ к службе на другом хосте, вы можете настроить сервер nginx на хосте докера и правило передачи прокси-сервера, чтобы направить его на удаленную службу.

person ksankar    schedule 04.02.2020