docker容器项目无法访问mysql

使用docker容器部署的项目无法访问在主机中安装的mysql?

从项目安全角度考虑,大多数公司在线上项目中都会开启防火墙,并针对指定端口添加白名单的方式进行访问。恰好就遇到了安装在宿主机中的mysql的端口3306没有开启访问,而是需要通过添加ip白名单的方式进行访问。这里mysql和容器部署的项目是在同一个服务器,mysql不是通过容器部署的。

刚开始是先将用户的有线ip和vpn ip添加至服务器的3306端口,但是仍然无法访问到mysql,经过多次尝试然后发现在docker-compose中有指定了docker项目的ipv4_address,然后尝试将该地址添加到mysql的3306端口,成功解决问题。

容器项目docker-compose

executor:
    image: redis
    ports:
      - 1111:1111  #暴露的端口信息和docker run -d -p 80:80 一样
    container_name: executor-test #容器名称
    networks: 
      default_net: 
        ipv4_address: xxx.xxx.xxx.x
    environment: 
      - TZ=Asia/Shanghai

添加白名单命令:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="xxx.xxx.xxx.x" port protocol="tcp" port="3306" accept'

当容器没有指定ipv4_address的时候,docker会默认生成一个容器ip地址,通过如下命令查询:

docker inspect 容器id

显示内容中部分

     "Networks": {
                "test-compose_default_net": {
                    "IPAMConfig": {
                        "IPv4Address": "169.122.178.33"
                    },
                    "Links": null,
                    "Aliases": [
                        "64c44adf5a89",
                        "test"
                    ],
                    "NetworkID": "89284b44b52c5b0e07c9dd26094",
                    "EndpointID": "d1ae9ead2958450a2123a8566371",
                    "Gateway": "169.122.178.1",
                    "IPAddress": "169.122.178.33",
                    "IPPrefixLen": 12,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "05:48:d0:a0:l0:55",
                    "DriverOpts": null
                }
            }

其中  "IPv4Address": "169.122.178.33" 就是docker默认生成的。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值