加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

网络-从Docker容器连接到远程MySQL数据库

发布时间:2020-12-16 03:24:36 所属栏目:安全 来源:网络整理
导读:我在AWS中有两个服务器,两个服务器都在一个安全组中,该组允许安全组成员之间所有端口上的所有流量.在一个服务器上,我有一个MySQL服务器(没有docker,我们将此服务器称为“ MySQL服务器”),在另一台服务器上,我有docker(我们将其称为“ Docker服务器”).我想从

我在AWS中有两个服务器,两个服务器都在一个安全组中,该组允许安全组成员之间所有端口上的所有流量.在一个服务器上,我有一个MySQL服务器(没有docker,我们将此服务器称为“ MySQL服务器”),在另一台服务器上,我有docker(我们将其称为“ Docker服务器”).我想从docker服务器上的容器中访问MySQL,而不必通过Internet路由流量(我想改用MySQL服务器的内部IP地址).

这可能吗?我有什么选择?

到目前为止我尝试过的

我已经将MySQL服务器配置为侦听所有接口,仅用于测试.这使我可以从Docker服务器成功连接到MySQL服务器(使用mysql客户端连接到MySQL服务器的私有IP地址).但是,当我启动容器时,会创建一个新的网络名称空间,因此我无法再访问MySQL服务器的私有IP地址.

我已经尝试使用here所述的大使容器,但是遇到了同样的问题,大使容器内部没有MySQL服务器的专用IP地址.

这是一个示例来说明问题和我正在尝试做的事情.

从Docker服务器(尚未在任何容器中):

$ping -c 1 10.0.0.155
PING 10.0.0.155 (10.0.0.155) 56(84) bytes of data.
64 bytes from 10.0.0.155: icmp_seq=1 ttl=64 time=0.777 ms

--- 10.0.0.155 ping statistics ---
1 packets transmitted,1 received,0% packet loss,time 0ms
rtt min/avg/max/mdev = 0.777/0.777/0.777/0.000 ms

但是从容器中尝试:

$sudo docker run --rm -it apcera/nats-ping-client ping -c 1 10.0.0.115
PING 10.0.0.115 (10.0.0.115) 56(84) bytes of data.
From 10.0.0.200 icmp_seq=1 Destination Host Unreachable

--- 10.0.0.115 ping statistics ---
1 packets transmitted,0 received,+1 errors,100% packet loss,time 0ms

我之所以这样,是因为我知道Docker仅为容器创建了一个新的专用网络,但我所知还不足以解决我想做的事情.

如何连接东西以便能够从容器中访问mysql服务器?

最佳答案
是的,那是可能的.

容器是否可以与世界对话取决于两个因素.第一个因素是主机是否正在转发其IP数据包.第二个问题是主机的iptables是否允许此特定连接.

>要检查内核上的设置或手动将其打开:(确保设置为1)

$sysctl net.ipv4.conf.all.forwarding

net.ipv4.conf.all.forwarding = 0

$sysctl net.ipv4.conf.all.forwarding=1

$sysctl net.ipv4.conf.all.forwarding

net.ipv4.conf.all.forwarding = 1

>如果守护程序启动时设置–iptables = false,则Docker将永远不会更改系统iptables规则.否则,Docker服务器将转发规则附加到DOCKER过滤器链.因此,请确保不要使用–iptables = false

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读