Связь из Docker-контейнера во внешнюю среду

#docker #networking #grafana

Вопрос:

Я совсем новичок в темах docker, и у меня есть вопрос о подключении контейнерных сервисов к традиционным.

В настоящее время я подумываю о замене традиционной установки grafana (непосредственно на сервере Linux) контейнером grafana docker.

В grafana мне приходится подключаться к различным источникам данных, таким как экземпляр mysql, база данных Winsows SQL и так далее. Итак, grafana выполняет сбор данных. Все эти источники данных находятся (и будут по-прежнему находиться) на других хостах, и они не являются контейнерами.

Итак, как я могу реализовать, чтобы мой контейнер мог взаимодействовать с этими источниками данных? Возможно ли это по умолчанию или мне нужно реализовать особый тип сети? Я видел, что есть опция, называемая macvlan…is это правильный путь?

БР Янв

Ответ №1:

Насколько я понимаю, это должно работать из коробки. По крайней мере, я использую Grafana внутри контейнера docker, и он работает отлично.

Вы можете протестировать подключение изнутри вашего контейнера docker к какому-либо внешнему ресурсу, открыв оболочку контейнера следующим образом:

 docker exec -it <container ID> /bin/bash
 

И затем

 root@a9cbebfc4564:/# curl google.com
 

Или

 root@a9cbebfc4564:/# ping <bla-bla>
 

Приведенные выше команды зависят от среды docker image (например, ОС или установленного программного обеспечения), но это можно решить тем же способом, что и в обычной среде Unix

PS Однажды я столкнулся с проблемой подключения к docker2host, но это было связано с неправильной конфигурацией брандмауэра на стороне хоста.

Ответ №2:

Поскольку вы заменяете традиционную установку, вы можете начать с сети хоста. Этот режим обеспечивает такое же удобство подключения, как и при установке на хост. Быстрый запуск так же прост, как:

docker run --network host grafana/grafana

Обратите внимание, что нет необходимости в --publish --publish-all портах or, поскольку контейнер Grafana теперь совместно использует сеть хоста.