Docker容器的程序连接宿主机的MySQL全过程

 更新时间:2025年06月04日 08:38:05   作者:若水印象  
这篇文章主要介绍了Docker容器的程序连接宿主机的MySQL全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Docker容器的程序连接宿主机的MySQL

docker里面的代码生成的数据需要写入到宿主机的Mysql服务器上,想要用本地的数据库测试自己的代码正确性,项目程序安装在docker容器中,于是必定要在docker容器里访问到本地的数据库。

(1)在docker容器里localhost并不是指宿主机的localhost

因此不能在容器中通过localhost:3306访问到宿主机的mysql,也不可以通过127.0.0.1访问。

(2)docker在运行时就建立了虚拟网卡

并命名为docker0,可以在宿主机上运行ifconfig看到它,这就是宿主机建立的网桥,用于与各个容器之间通信。

[root@VM-8-15-centos ~]# ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:53ff:fed0:4c11  prefixlen 64  scopeid 0x20<link>
        ether 02:42:53:d0:4c:11  txqueuelen 0  (Ethernet)
        RX packets 4489  bytes 6944799 (6.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3379  bytes 999348 (975.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ifconfig 为什么看不到 docker0

在最近的 Docker 版本中,docker0 网络接口已经被弃用,因此您在使用最新版本的 Docker 时可能看不到该接口。

相反,Docker 现在使用名为 bridge 的网络驱动程序来管理 Docker 容器的网络连接。您可以使用 ip addr 命令来查看当前正在运行的 Docker 网络:

$ ip addr show docker0

(3)宿主机在与容器同一局域网的IP地址

一般是docker0对应的IP地址段的首个地址(如172.17.0.1),因此,可以在容器里通过172.17.0.1:3306访问到宿主机的mysql服务器。

mysql服务器默认的设置为允许127.0.0.1段的ip地址访问

如果用172.17.0.1:3306仍然无法访问到宿主机的话,需要设置一下mysql的访问权限:

如果用的是宝塔面板,可以给nacos这个数据库设置权限为所有人

 mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '12345678' WITH GRANT OPTION;
 mysql>flush privileges;
// 其中各字符的含义:
// *.* 对任意数据库任意表有效
// "root" "12345678" 是数据库用户名和密码
// '%' 允许访问数据库的IP地址,%意思是任意IP,也可以指定IP
// flush privileges 刷新权限信息

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • docker容器分配固定ip的实现示例

    docker容器分配固定ip的实现示例

    如果不固定ip,每次主机重启后,docker会动态给容器分配ip,导致redis容器的IP自动换了 ,然后还得去改配置就很烦,本文主要介绍了docker容器分配固定ip的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • 在docker上安装运行mysql实例

    在docker上安装运行mysql实例

    Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。
    2017-01-01
  • 基于Docker部署Tomcat集群、 Nginx负载均衡的问题小结

    基于Docker部署Tomcat集群、 Nginx负载均衡的问题小结

    这篇文章主要介绍了基于Docker部署 Tomcat集群、 Nginx负载均衡,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • 使用docker更改容器内root密码的操作

    使用docker更改容器内root密码的操作

    这篇文章主要介绍了使用docker更改容器内root密码的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 详解如何优雅的给Docker配置网络代理

    详解如何优雅的给Docker配置网络代理

    有时因为网络原因,比如公司 NAT,或其它啥的,需要使用代理,这篇文章主要为大家详细介绍了如何优雅的给Docker配置网络代理,需要的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • Docker容器内存限制的方法

    Docker容器内存限制的方法

    本篇文章主要介绍了Docker容器内存限制的方法,具有一定的参考价值,有兴趣的可以了解一下。
    2017-01-01
  • Docker安装MySql8并远程访问的实现

    Docker安装MySql8并远程访问的实现

    本文主要介绍了Docker安装MySql8并远程访问的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Docker搭建MySQL5.7主从复制的实现

    Docker搭建MySQL5.7主从复制的实现

    本文主要介绍了Docker搭建MySQL5.7主从复制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • 使用Docker搭建本地开发环境的详细指南

    使用Docker搭建本地开发环境的详细指南

    这篇文章主要介绍了使用Docker搭建本地开发环境的详细指南,涵盖了从基础Docker准备到多容器管理、安全强化等各个方面,通过使用Docker,可以确保开发环境的一致性、可移植性和可版本控制,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-04-04
  • docker 搭建svn服务器的教程

    docker 搭建svn服务器的教程

    这篇文章主要介绍了docker 搭建svn服务器的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03

最新评论