docker容器项目无法访问mysql

这篇具有很好参考价值的文章主要介绍了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默认生成的。文章来源地址https://www.toymoban.com/news/detail-589354.html

到了这里,关于docker容器项目无法访问mysql的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker容器内部无法访问外网原因之一

    部署了一个Docker环境,宿主机可以访问Internet,启动了一个容器发现容器里的服务无法访问Internet,Docker网络使用的是桥接(bridge)模式。 使用Docker桥接模式启动的容器,宿主机如果可以访问外网,按理来说Docker容器本身也可以访问外网的。其原理:容器网卡与宿主机的dock

    2023年04月25日
    浏览(36)
  • Docker 容器正常启动但通过ip加端口无法访问

    前置条件:使用的阿里云轻量云服务器,ECS服务器应该也是类似的。 问题排查过程 排查linux服务器本身的防火墙是否开启,查看后是关闭的。 排查轻量云服务器的安全组是否将端口加入安全组,否则也是无法访问的,端口已加入安全组,可以排除这个问题。 通过tcping等端口

    2024年02月08日
    浏览(24)
  • 解决docker容器之间网络互通 启动web服务只能本地localhost访问无法从外部访问

    docker容器之间相互访问 1.查看当前的网络 Copy [root@host ~]# docker network ls NETWORK ID          NAME                DRIVER              SCOPE 3dd4643bb158        bridge              bridge              local 748b765aca52        host                host                local 4d59a0cd3ff

    2024年02月10日
    浏览(30)
  • Docker创建tomcat容器实例后无法访问(HTTP状态 404 - 未找到)

    天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。 不指定版本默认拉取的最新的latest版本 查看运行的容器 看到容器正在运行,且端口映

    2024年02月12日
    浏览(34)
  • docker安装mysql容器创建成功但无法启动问题

    在我之前的文章里 使用docker安装mysql中在拉取了mysql:5.7版本的镜像后,使用了以下命令来创建容器,容器创建成功,但无法启动,如下: 执行创建命令后,docker ps 查看正在运行中的容器,显示为空, docker ps -a 查看,mysql容器已经创建成功,但是在创建好之后就退出了 鉴于上

    2024年02月12日
    浏览(27)
  • docker 部署 mysql8.0 无法访问

    这是我的启动命令,发现没有我这里是没有指定端口的 这段命令的来源是docker 镜像仓库官网 使用 docker ps 查看 发现端口有没有什么不一样没 正常的都有 0.0.0.0:端口 我的这个没有 于是我把这个容器删除了 docker rm -f 容器Id ,重新创建了一个 docker run -p 3306:3306 --name mysql -e MYSQL_

    2024年02月15日
    浏览(26)
  • docker容器运行成功但无法访问,原因分析及对应解决方案(最新,以Tomcat为例,亲测有效)

    原因分析:     是否能访问当运行docker容器虚拟机(主机)地址     虚拟机对应的端口号是否开启或者防墙是否关闭     端口映射是否正确(这个是我遇到的)     tomcat下载的是最新版,docker运行后里面是没有东西的,会报404 一般都是这几个原因导致的明明docker容器运行

    2024年02月10日
    浏览(31)
  • 记一次线上mysql出错:由于docker自动拉取最新mysql镜像导致mysql容器无法启动

    我随便写写,你们随便看看 环境背景:在docker中部署mysql镜像,通过portainer管理docker容器 简单说下过程:docker里mysql的时区没有设置,导致相差8小时,通过增加TZ=Asiz/Shanghai环境变量,然后重启容器来生效。结果重启的时候始终无法启动起来,后来发现是自动升级了mysql镜像版

    2024年02月07日
    浏览(36)
  • docker 启动 mysql 通过防火墙设置端口无法访问解决方案

    1、问题描述:通过 docker compose 启动mysql服务,然而在防火墙添加了3306端口后却无法访问,但是关闭防火墙后又可以访问mysql数据库。 解决方案: 重启 docker 后解决: systemctl restart docker 如果没有解决问题则执行如下命名后可以解决 2、执行 docker-compose up -d 报错如下: 重启

    2024年02月07日
    浏览(44)
  • 2-Docker-应用-多容器部署Django+Vue项目(nginx+uwsgi+mysql)

    基于Linux CentOS 7系统(虚拟机),使用Docker,多容器部署Django+Vue项目 整体部署用到了:Django+Vue+nginx+mysql+uwsgi 先每一个容器单独部署,最后用Docker compose 语法整合,统一部署 参考文章:https://blog.csdn.net/qq_45445505/article/details/135563784 章标题:Docker介绍 节标题:Docker安装 总结梳

    2024年03月10日
    浏览(80)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包