• 开发时从宿主机连接容器中的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获得的一些信息,肯定会存在纰漏。

  • 相关阅读:
    check事件
    JAVA----泛型
    JAVA集合的遍历for循环、Iterator迭代器
    JAVA 集合的定义分类
    JAVA面向对象---方法的重写与重载
    JAVA 面向对象---继承
    JAVA 面向对象
    JAVA ArrayList集合
    JAVA基础测试
    JAVA中 引用数据类型(类)
  • 原文地址:https://www.cnblogs.com/heartlake/p/10958376.html
Copyright © 2020-2023  润新知