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并实现客户端连接的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Docker部署mysql一主一从的操作方法

    下载镜像 选择MySQL镜像 docker search mysql 下载MySQL5.7镜像 docker pull mysql:5.7 查看mysql镜像 docker images 搭建MySQL主从 master docker run --name mysql-master -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 slave docker run --name mysql-slave -p 3308:3306 -e

  • docker 部署mysql连接问题及遇到的坑

    发现windows上有一个docker descktop(虽然不怎么好用), 安装之后准备直接用docker搭本地测试环境的基础设施(比如MySQL,Redis,MongoDB,ES啥的), 虽然比去到处找安装包安装来的好, 不过这样就体会不到自己装软件的乐趣了(滑稽.jpg) 首先是安装MySQL, 遇到了几个问题, 记录下 mysql镜像用的是最新版的, docker search mysql可以看大很多版本的, 我用的是第一个使用量最多那个(稳妥) 1.启动时未指定相关环境变量 docke

  • docker上部署MySQL的示例

    容器云的概念现在很火,现在很多公司都把MySQL部署在容器上,开始今天内容之前,我们先来看看容器云的概念吧. 1 容器云是什么? 要理解容器云的概念,首先需要了解容器,容器的介绍过程中,需要引入虚拟机来进行对比. 虚拟机: VMware或者Virtual BoX这种虚拟机想必大家在日常工作中都有用到过,它是模拟计算机操作系统的软件,你可以在windows计算机上安装Virtual BoX软件,然后在Virtual Box上安装Centos或者Ubuntu这种Linux操作系统,从而在一台机器上运

  • Docker部署Mysql集群的实现

    单节点数据库的弊病 大型互联网程序用户群体庞大,所以架构必须要特殊设计 单节点的数据库无法满足性能上的要求 单节点的数据库没有冗余设计,无法满足高可用 单节点MySQL的性能瓶领颈 2016年春节微信红包巨大业务量,数据库承受巨大负载 常见MySQL集群方案 mysql 集群方案介绍,建议使用pxc,因为弱一致性会有问题,比如说a节点数据库显示我购买成功,b 节点数据库显示没有成功,这就麻烦了,pxc 方案是在全部节点都写入成功之后才会告诉你成功,是可读可写双向同步的,但是replication

  • Docker 部署Mysql 服务和Redis 服务的方法

    Docker 部署Mysql 服务的方法 1. 拉取Mysql 5.6最新版本镜像 sudo docker pull mysql:5.6 2. 查看Mysql 镜像 sudo docker images 3. 在home目录下创建需要映射的目录: mkdir -p /home/computer/project/mysql/{conf,log,data} 4. 运行容器 duso docker run -p 53603:3306 --name iot-mysql \ -v /home/comput

  • Docker部署mysql远程连接 解决2003的问题

    连接MySQL 这里我使用navicat远程连接,连接MySQL前需要防火墙开放端口或者关闭防火墙. 开放端口 firewall-cmd --add-port=3306/tcp --permanent // --permanent 永久生效,没有此参数重启后失效 firewall-cmd --reload // 重新载入 关闭防火墙 systemctl stop firewalld systemctl enable iptables // 设置开机启动 firewall-cmd --reload

  • docker部署mysql 实现远程连接的示例代码

    1.docker search mysql   查看mysql版本 2.docker pull mysql  要选择starts最高的那个name 进行下载 3.docker images  查看下载好的镜像 4.启动mysql实例 docker run --name dockermysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql  --name 为mysql的实例设置别名. -p 3307为对外暴露的端口.3306是内

  • Docker 部署 Mysql8.0的方法示例

    1. 参照官网,安装docker 2.拉取mysql镜像 (默认拉取最新的镜像)8.0.11 docker pull mysql 3.在宿主机创建持久化 mysql data 及mysql.cnf mkdir /usr/local/mysqlData/test/cnf mkdir /usr/local/mysqlData/test/data vi /usr/loal/mysqlData/test/cnf/mysql.cnf 设置本地文件共享: Docker -> Preferences... -

  • 详解使用Docker部署MySQL(数据持久化)

    本文简述如何使用Docker部署mysql,同时持久化数据.我们会用到tutum-docker-mysql 这个项目来搭建一个mysql,省去重头写Dockerfile的时间. 首先我们将tutum-docker-mysql跑起来. docker run -d -p 3306:3306 --name mysql tutum/mysql 如果你本地没有tutum/mysql的image,docker会先下载它的image,这一步可能会用些时间.待执行完毕我们检查一下应该会有如下样子 tutum-d

  • Docker部署Mysql,.Net6,Sqlserver等容器

    Centos8安装Docker 1.更新一下yum [root@VM-24-9-centos ~]# yum -y update 2.安装containerd.io # centos8默认使用podman代替docker,所以需要containerd.io [root@VM-24-9-centos ~]# yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2

随机推荐