从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 容器现在共享主机网络。