【问题标题】:How to connect Mysql docker container to Grafana如何将 Mysql docker 容器连接到 Grafana
【发布时间】:2020-07-31 10:02:43
【问题描述】:

我在 EC2 实例上运行两个容器:

docker run -d --name=grafana -p 3000:3000 grafana/grafana

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

在我添加主机 18.211.211.211:3306 时在 Grafana 仪表板中

然后按测试,我收到以下错误: 拨打 tcp 18.211.211.211:3306:连接:连接被拒绝

还运行了以下命令,但没有成功:

sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp

sudo firewall-cmd --reload

如何解决这个问题,有什么想法吗? 谢谢

【问题讨论】:

  • 你的 MySQL 是否在监听 3306 端口?检查您的防火墙(iptables、firewalld 等)是否阻止了连接?
  • 如何检查。防火墙iptables,firewalld ?? ->firewall-cmd --state -> 运行中
  • -A IN_public_allow -p tcp -m tcp --dport 3306 -m conntrack --ctstate NEW -j ACCE PT
  • 当我停止并再次运行容器时,出现以下错误:>>>>> docker:来自守护进程的错误响应:驱动程序在端点 grafana 上编程外部连接失败(48f13318a509d098fffb708caertffda3728a8ce9e1b1b47e1425218262):(iptables 失败: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3000 -j DNAT --to-destination 172.17.0.2:3000 !-i docker0: iptables: No chain/target/match by that名字。

标签: docker grafana


【解决方案1】:

我通过 2 个步骤得到了解决方案。

  1. 通过添加 -p 3306:3306 将 docker 的 3306 端口暴露给本地主机,同时使用 5.7 版本的 MySQL 映像。

docker run --name some-mysql -p 443:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d --rm mysql:5.7

  1. 从 Grafana 连接到 MySQL 时,使用机器的 IP 地址而不是 localhost 或 0.0.0.0 或 127.0.0.1

【讨论】:

    【解决方案2】:

    您必须使用-p 3306:3306 转发mysql 端口3306。出于安全原因,并且由于您在与 MySql 相同的主机上运行 Grafana,我建议您使用 docker 的 bridge network 和私有 IP。不幸的是,-p 选项会以绕过防火墙配置的方式改变您的 Iptables。你应该看看this guide或官方docker iptable docs

    【讨论】:

    • 谢谢你,菲利克斯/瓦西姆
    猜你喜欢
    • 2019-01-25
    • 1970-01-01
    • 2019-04-14
    • 2017-12-12
    • 2019-01-25
    • 1970-01-01
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多