从Docker-容器到外部的通信
Communication from Docker-Container to outside
我对 docker 主题很陌生,我有一个连接容器服务与传统服务的问题。
目前我正在考虑用 grafana docker 容器替换传统的 grafana 安装(直接在 linux 服务器上)。
在 grafana 中,我必须连接到不同的数据源,例如 mysql 实例、Winsows SQL 数据库等。所以 grafana 正在拉取数据。所有这些数据源驻留在(并将继续驻留在)其他主机上,它们不是容器。
那么我该如何实现我的容器能够与这些数据源进行通信呢?默认情况下是否可能,还是我必须实施一种特殊的网络?我看到有一个名为 macvlan 的选项...这是正确的方法吗?
BR
一月
据我所知,这应该是开箱即用的。至少,我在 docker 容器中使用 Grafana,它运行良好。
您可以通过打开容器 shell 来测试从 docker 容器内部到某些外部资源的连接:
docker exec -it <container ID> /bin/bash
然后
root@a9cbebfc4564:/# curl google.com
或者
root@a9cbebfc4564:/# ping <bla-bla>
上面的命令取决于 docker 图像环境(如 OS 或已安装的软件),但这可以像在常规上一样解决Unix 环境
P.S。我遇到过一次 docker2host 连接问题,但这是由于主机端的防火墙配置不正确造成的。
由于您要替换传统安装,因此可以从 host networking 开始。此模式为您提供与在主机上安装相同的连接体验。快速入门非常简单:
docker run --network host grafana/grafana
请注意,无需 --publish
或 --publish-all
端口,因为 Grafana 容器现在共享主机网络。
我对 docker 主题很陌生,我有一个连接容器服务与传统服务的问题。
目前我正在考虑用 grafana docker 容器替换传统的 grafana 安装(直接在 linux 服务器上)。
在 grafana 中,我必须连接到不同的数据源,例如 mysql 实例、Winsows SQL 数据库等。所以 grafana 正在拉取数据。所有这些数据源驻留在(并将继续驻留在)其他主机上,它们不是容器。
那么我该如何实现我的容器能够与这些数据源进行通信呢?默认情况下是否可能,还是我必须实施一种特殊的网络?我看到有一个名为 macvlan 的选项...这是正确的方法吗?
BR 一月
据我所知,这应该是开箱即用的。至少,我在 docker 容器中使用 Grafana,它运行良好。
您可以通过打开容器 shell 来测试从 docker 容器内部到某些外部资源的连接:
docker exec -it <container ID> /bin/bash
然后
root@a9cbebfc4564:/# curl google.com
或者
root@a9cbebfc4564:/# ping <bla-bla>
上面的命令取决于 docker 图像环境(如 OS 或已安装的软件),但这可以像在常规上一样解决Unix 环境
P.S。我遇到过一次 docker2host 连接问题,但这是由于主机端的防火墙配置不正确造成的。
由于您要替换传统安装,因此可以从 host networking 开始。此模式为您提供与在主机上安装相同的连接体验。快速入门非常简单:
docker run --network host grafana/grafana
请注意,无需 --publish
或 --publish-all
端口,因为 Grafana 容器现在共享主机网络。