我启动了容器,并在 Grafana 中设置了一个 MySQL 数据源。
我尝试使用 localhost:3306 作为主机,并粘贴了凭据。但是在“保存并测试”后,我收到了错误消息:
dial tcp 127.0.0.1:3306: connect: connection refused
我认为我对主机地址有误解。是否有人可以帮助我?
谢谢。
仅限于开发目的,我们可以使用“host.docker.internal”
请参考官方网站中的“I WANT TO CONNECT FROM A CONTAINER TO A SERVICE ON THE HOST”部分(链接)
你可以通过两种方式连接这两个容器:
通过互联网。如果你想从 Grafana 访问 MySQL,你可以配置数据源,访问 host-ip-adress:default-mysql-address
(3306)来访问。所以 MySQL 容器必须在该端口上运行(docker run -d -p 3306:3306 --name name-mysql-container mysql-image
),然后 Grafana 可以通过互联网访问。这个选项更简单,但是不是一个好的做法。将数据库暴露给互联网只有在其他应用程序连接到该数据库时才需要,否则数据库应该关闭对互联网的访问。
通过网络。两个容器必须在同一个网络中。你可以创建一个网络(docker network create --driver bridge my_grafana_mysql_network
),然后在运行两个容器时设置网络(docker run -d -p 3306:3306 --name name-mysql-container --network my_grafana_mysql_network mysql-image
)标志,这样两个容器就可以相互看到。然后在 Grafana 的数据源中调用容器的名称。
提示: 您可以使用docker inspect docker-container-name
命令,验证两个容器是否在同一网络中,并检查容器的名称。这非常有帮助。
提示: 您可以使用此命令docker network ls
列出网络,以检查网络。
host.docker.internal
来实现,因为Grafana在Docker容器中,而MySQL也在Docker容器中运行。