使用 Docker 创建 MySQL 容器
我们在工作中用到最多的数据库应该就是 MySQL 了,很多时候可能大部分人都会选择在自己的本机去安装一个 MySQL,但是普通的安装对自己的主机内存占用很大,步骤比较繁琐,一般都只能启用一个 MySQL 服务,而且以后卸载的时候也很不方便。但是,有了 Docker 以后这中间的好多步骤都可以省略,如果不需要的时候删除容器也是很方便的,只需要一个命令即可。
下面我就就详细介绍下如何使用 Docker 安装 MySQL 。
1. 准备工作
1.1 安装Docker
至于 Docker 的安装我就不再详细说明了, 无论你是 Windows、Mac 还是 Linux,现在网上都有很多安装教程,你可以根据步骤进行安装。相信我,这绝对是一个一劳永逸的方式,以后都会用到,这里我们就当 Docker 已经安装完啦。
1.2 拉取 MySQL 的镜像(这里使用 MySQL5.7 版本)
mysql 现在最新的版本以及更新到8.0了,如果你在 Java 程序中引用 MySQL 的包,路径上是需要修改的。
- 拉取 MySQL 镜像
$ docker pull mysql:5.7
1.3 查看 MySQL 镜像
当我们从镜像仓库拉完 MySQL 以后,本地或者服务器上就已经有了 MySQL 的镜像,我们可以通过命令去查看
- 查看 MySQL 镜像是否拉取
$ docker images
这个命令就列出了当前主机上已经下载的所有镜像。
1.4 在宿主机上创建数据存储文件夹
使用 Docker 安装镜像之后对于数据要有规律的去保存,这样也方便以后删除镜像的时候能够轻易的找到数据一起删除。所有在这里我所有使用 Docker 安装的镜像都会在 /data/docker 目录下,Docker 目录中根据镜像再进行分类。
例如:这里我要使用 Docker 启动一个 MySQL 的容器 容器名称为mysql001,这样我就创建如下目录
- 创建数据存储目录
$ mkdir /data/docker/mysql/mysql001
2. 启动 MySQL 容器
2.1 创建容器
- 创建容器
$ docker run --name mysql001 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -v /etc/localtime:/etc/localtime -v /data/docker/mysql/mysql001:/var/lib/mysql -d mysql:5.7
- 各命令的作用说明
这里我们对上面的命令进行拆解,清楚的了解每一步都是在做什么操作。- docker run
这是启动一个容器 - –name mysql001
启动的容器名称为mysql001,这个名称在后面操作可直接使用名称 - -p 3306:3306
映射端口,前面一个端口是宿主机的端口,后面一个端口是 MySQL 的端口,我们访问数据库是通过访问宿主机去访问,所以使用的是前面一个端口 - -e MYSQL_ROOT_PASSWORD=root
设置 MySQL 的登录密码为root - -v /etc/localtime:/etc/localtime
这个是这是启动容器的时区和宿主机一致,这个设置比较有用,不然会出现数据库中的时间比当前时间晚8小时 - -v /data/docker/mysql/mysql001:/var/lib/mysql
这个就是用刚刚创建的目录去存储 MySQL 的数据了,我们在 MySQL 中的所有数据都会存储在宿主器前面的目录里 - -d mysql:5.7
-d是开启 Daemon 模式即保护进程的方式运行。最后的这个是知道启动容器的版本 如果没有的话默认就是 latest 和前面 pull 镜像时一样
- docker run
2.2 启动 MySQL
执行完上面的命令后容器并没有启动,我们可以通过执行以下命令去启动容器
- 启动 MySQL
$ docker start mysql001
或者将name修改为image_id,image_id可以通过 docker images命令去查看。
3.访问 MySQL 数据库
- 方式一:使用命令行 mysql client 访问
$ mysql-cli -h 127.0.0.1 -u root -p root
- 方式二:使用客户端访问
如:mysqlworkbatch,navicat,sqlyog等客户端软件。
4.删除容器
如果不想再使用 MySQL 容器 那么我们就可以删除它,删除之前必须要保证容器是 stop 的,可以通过下面的命令查看:
- 查看正在运行的容器
$ docker ps
- 查看所有运行过的容器包括正在运行的容器
$ docker ps -a
- 停止运行容器
$ docker stop mysql001
- 删除容器
可以根据容器的名称进行删除
$ docker rm mysql001
还可以根据上面的 -a 命令可以查找到容器id,执行命令删除容器
$ docker rm 容器id
5.结语
经过上面的步骤,我相信你们的 MySQL 已经在本地搭建完成了,相比于自己安装 MySQL的客户端是不是少了许多的配置呢?如果是在 Docker 已经安装完成的情况下,比较熟练最少可以在2-3分钟之内安装完事,是不是很快?
天将降大任于是人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。