Docker部署MySQL并实现客户端连接

 更新时间:2022年01月20日 10:52:22   作者:老马-Max  
这篇文章介绍了Docker部署MySQL并实现客户端连接的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

准备工作

在docker内部署任何应用,都需要先下载对应的镜像;下载镜像之前,需要先搜索镜像来确认该镜像是否存在:

docker search mysql

从列表可以看到,docker已经有了mysql的镜像,名称是“mysql”,接下来下载镜像:

docker pull mysql

下载完成后,查看一下本地镜像:

如果在列表中看到mysql,镜像下载就已经成功了。

容器设置

在docker中,真正运行的是容器,镜像在我理解中是一种环境。我们在指定的镜像中运行某个容器,然后编辑和配置这个容器,从而达到想要的效果。使用以下命令运行一个mysql容器:

docker run -d -it -p 3306:3306 --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 mysql

解释一下

  • -d:代表后台运行,并返回容器的ID;
  • -it:是一个组合命令,可以使容器在运行时不会阻塞当前操作界面。(另一种写法是 -i -t );
  • -p 3306:3306:将宿主机上的端口映射到容器对应端口;
  • -e MYSQL_ROOT_PASSWORD=123456:设置环境变量,此处是设置root用户密码为123456;
  • --name mysql01:自定义容器名称为mysql01;

最后的mysql:镜像的名称。

这行命令的结果是在mysql镜像中运行了一个名为mysql01的容器,并且root用户的密码是123456。接下来看一下容器有没有正常运行:

看到STATUS那一栏是Up开头就代表启动成功了。

Docker下的Mysql操作

容器创建好以后,可以使用exec命令进入容器去操作:

docker exec -it mysql01 bash

进入容器以后,使用刚才设置好的账户密码登陆mysql:

登陆成功后,就可以按照mysql的命令去操作表库了。因为mysql和dockers容器的退出指令都是exit,所以如果要回到根目录,先输入exit退出mysql,再输入exit退出容器。

客户端连接Docker容器下的Mysql

上面已经实现了docker内操作mysql,但全命令行的操作很费时,这显然不符合高效开发同学们的要求,所以现在有个简单的方法,就是使用客户端连接docker容器下的mysql。

我们知道docker是运行在虚拟机环境下的,虚拟机有单独的IP地址和端口,只要找到docker所在虚拟机的IP即可使用客户端连接到docker容器下的mysql。但是直接去连肯定会失败,为什么?两个原因:

  • 1、因为docker容器也拥有独立的端口和IP,所以直接访问docker所在虚拟机的IP是访问不到的,因此需要将docker容器的端口映射到docker所在主机的端口上。
  • 2、因为mysql默认不允许远程连接。

端口映射在前面已经做好了,所以现在只需要修改mysql允许所有连接即可。登陆docker容器的mysql,输入以下命令:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

成功以后,另外打开一个cmd,输入ipconfig列出所有IP:

红框圈起来的就是虚拟机在用的IP了,使用这个IP和刚才设置的账户密码就可以用客户端连接了:

(如果本机没有MySql,直接用localhost也是可以成功登陆navicat的。)

测试

通过navicat创建一个数据库docker_mysql:

 然后切换到docker环境,进入mysql01容器,查看所有数据库:

使用客户端创建的数据库在容器内也可以查到,测试成功。

需要注意的一点是,docker一但停止运行,关联的虚拟机也会被释放,所有数据都会随之消失。资料卷可以解决这个问题,但是本文篇幅有限,后面几篇文章会详述这个问题。

到此这篇关于Docker部署MySQL并实现客户端连接的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 关于docker部署的jenkins跑git上的程序的问题

    关于docker部署的jenkins跑git上的程序的问题

    这篇文章主要介绍了docker部署的jenkins跑git上的程序的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Docker中Cgroup资源配置的实现

    Docker中Cgroup资源配置的实现

    Cgroup不仅可以限制被namespace 隔离起来的资源,还可以为资源设置权重、计算使用量、操控进程启停等,本文主要介绍了Docker中Cgroup资源配置的实现,感兴趣的可以了解一下
    2023-09-09
  • supervisor下的Dockerfile的多服务镜像封装操作

    supervisor下的Dockerfile的多服务镜像封装操作

    这篇文章主要介绍了supervisor下的Dockerfile的多服务镜像封装操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • harbor可视化私有镜像仓库环境及服务部署示例

    harbor可视化私有镜像仓库环境及服务部署示例

    这篇文章主要为大家介绍了harbor可视化私有镜像仓库环境及服务部署示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • Docker 安装 Jenkins 并解决初始安装插件失败问题

    Docker 安装 Jenkins 并解决初始安装插件失败问题

    这篇文章主要介绍了Docker 安装 Jenkins 并解决初始安装插件失败问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • Docker解决终端无法输入中文的问题

    Docker解决终端无法输入中文的问题

    这篇文章主要介绍了Docker解决终端无法输入中文的问题,帮助大家更好的理解和学习docker的用法,感兴趣的朋友可以了解下
    2020-08-08
  • Docker(黑马spring cloud笔记)详解

    Docker(黑马spring cloud笔记)详解

    这篇文章主要介绍了Docker(黑马spring cloud笔记)详解,本文章内容详细,具有很好的参考价值,希望对大家有所帮助,需要的朋友可以参考下<BR>
    2023-01-01
  • Docker+Jupyter 部署算力服务的解决方案

    Docker+Jupyter 部署算力服务的解决方案

    Docker+Jupyter部署算力服务为AI学习框架提供了一种高效的发布和使用方案,本文以Windows环境为例,介绍了如何下载安装Docker工具,以及如何根据AI框架所需的Python版本拉取合适的Jupyter镜像,本文介绍了Docker+Jupyter 部署算力服务的相关知识,一起看看吧
    2024-11-11
  • docker中的jenkins配置sonarQube的过程

    docker中的jenkins配置sonarQube的过程

    SonarQube是一个开源的代码分析平台,用来持续分析和评测项目源代码的质量,通过SonarQube可以检测出项目中重复代码,潜在bug, 代码规范,安全性漏洞等问题,并通过SonarQube web UI展示出来,这篇文章主要介绍了docker中的jenkins配置sonarQube,需要的朋友可以参考下
    2023-08-08
  • Docker使用Bind9实现域名解析的思路详解

    Docker使用Bind9实现域名解析的思路详解

    这篇文章主要介绍了DOCKER使用BIND9实现域名解析,主要包括刷新服务修改配置文件信息,实现思路也很简单,本文给大家介绍的非常详细对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-11-11

最新评论