开发时从宿主机连接容器中的MySQL

时间:2023-03-08 22:54:29
开发时从宿主机连接容器中的MySQL

从宿主机连接Docker容器中的MySQL

刚接触Docker,电脑安装Docker后,使用docker命令pull了一个MySQL5.6的Docker镜像,之后docker run启动创建容器。

可以使用docker exec -it 命令进入到容器,也能使用mysql命令连接到数据库。

但是在使用SpringBoot连接时,连接不上,开始使用的IP172.17.0.2,确认了容器IP确实是这个,又去确认密码什么的,都不行。后来又看到有人执行docker-machine命令去获取了一个IP地址192.168.99.100这个地址,结果执行docker-machine active发现没有活跃的容器,需要创建,但是我有个正在运行的容器,很奇怪,后来看到这是两种不同的启动容器的方式。

问题没解决就继续找,其实也看到文章或者视频里直接使用的一些地址,不知道是没说明这个地址还是我没在意,反正我没想到拿本机的IP+映射的端口。还是在翻一篇博客的评论里看到有个人质疑直接拿本机的IP来连接容器中的数据库,我才想起来拿本机IP尝试下。还在尝试的时候就感觉自己有点笨,做端口映射的目的不就是为了宿主机连接的吗?

简单看了下官方的文档docker docs中的描述,直接使用的docker run这种命令属于Docker Engine的客户端命令,而docker-machine则就属于Docker Machine的客户端命令,使用Docker Machine其实也是创建一个已经存在Docker Engine的虚拟机,之后还是需要docker run这个Docker Engine命令去创建一个容器。

在老版本的Mac和Windows上需要安装Docker Machine才能使用Docker,后来有了Docker Desktop for Mac和Docker Desktop for Windows两个native application后,高版本的Mac和Windows才不需要独立安装Docker Machine,其实native application已经包含了Docker Machine。

在OS X或者Windows上运行Docker,其实还是跑在Docker创建的一个Linux虚拟机上,使用VirtualBox创建的虚拟机。

Docker Machine可以对远程主机或者云主机做批量的创建容器,毕竟如果是集群的话,不可能一个一个的执行docker run命令。

以上就是初次接触Docker获得的一些信息,肯定会存在纰漏。