Docker中MySQL的安装与实践
Posted CodeArtist
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker中MySQL的安装与实践相关的知识,希望对你有一定的参考价值。
一、mysql 镜像下载
1. 查找 MySQL 镜像
2. 下载MySQL镜像
二、MySQL 容器运行
1. 配置端口映射
2. 配置环境变量
3. 查看数据卷
MySQL 是世界上最受欢迎的开源数据库。凭借其可靠性、易用性和性能,MySQL 已成为 Web 应用程序的数据库优先选择。我们在写 Demo 项目或者学习的时候,都经常会使用到 MysQL 数据库或集群,使用 Docker 能方便随时随地的搭建数据库环境。
一、MySQL 镜像下载
1. 查找 MySQL 镜像
登录 Docker Hub 官网搜索 MySQL 镜像,或者直接访问 https://hub.docker.com/_/mysql。
也可以在终端使用docker search mysql
来搜索 MySQL 镜像,OFFICAL 列为 OK 的为官方镜像。
2. 下载MySQL镜像
从 Docker Hub 拉取 MySQL 5.7 镜像,命令如下:
$ docker pull mysql:5.7
使用docker pull mysql:<tag>
来指定下载镜像的 tag,不指定默认为 latest。下载完成后使用docker images
来查看本地已经下载好的镜像。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 718a6da099d8 3 weeks ago 448MB
二、MySQL 容器运行
安装完成后,可以使用docker run <image>
命令来运行 MySQL 容器。
1. 配置端口映射
$ docker run --name mysql -p 3306:3306 -d mysql:5.7
8c3026a0acd14f53e702a9854b2ffe4aa2668a552e11e171b3ae667cbe691d31
--name
:指定容器名称,方便对容器的操作-p <host>:<container>
:指定端口映射,将容器的端口映射到主机的端口-d
:指定容器在后台运行,以守护进程的形式运行8c3026a...
:容器ID,对容器进行操作时用于指定容器
运行成功后可以使用下面命令查看运行中的 MySQL 容器:
# 查看运行中的容器
$ docker ps # 或 docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# 查看所有容器
$ docker ps -a # 或 docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1280ffeb3616 mysql:5.7 "docker-entrypoint.s…" 52 seconds ago Exited (1) 50 seconds ago mysql
我们发现没有运行成功的容器,再使用docker ps -a
命令查看所有容器,查看STATUS
列发现容器状态为已经退出。此时使用docker logs mysql
来查看容器运行的日志来找出问题:
$ docker logs mysql
2020-08-30 03:25:12+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.31-1debian10 started.
2020-08-30 03:25:12+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2020-08-30 03:25:12+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.31-1debian10 started.
2020-08-30 03:25:12+00:00 [ERROR] [Entrypoint]: Database is uninitialized and password option is not specified
You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
日志提示我们需要指定一个MYSQL_ROOT_PASSWORD
、MYSQL_ALLOW_EMPTY_PASSWORD
或MYSQL_RANDOM_ROOT_PASSWORD
的环境变量来作为数据库 root 用户的密码。
2. 配置环境变量
移除刚才运行失败的容器,并指定环境变量重新运行:
# 移除容器
$ docker container rm mysql
mysql
# 指定端口映射和环境变量运行
$ docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
bdfa70905470e241daaf9fcd332c957550e24b10b74c4a2232001c79e3dae898
-e key=value
:用于指定容器中系统的环境变量
此时使用docker ps
查看容器已经运行成功了,接下来我们可以使用 MySQL 数据库客户端来连接使用了。使用下面命令,并输入我们刚才配置的密码,就可以进入数据库了。
$ mysql -h 127.0.0.1 -u root -p
3. 查看数据卷
在 Docker 中,MySQL 数据库的数据持久化是通过创建数据卷来实现的,也就是说所有在数据库中存储的数据,都会保存在主机上,使用下面命令来查看数据卷详情:
# 查看数据卷
$ docker volume ls
DRIVER VOLUME NAME
local b25a62989527e7b0c9113300cdde9fb26354d96c863e942712d02dc2756c80ca
# 查看数据卷详情
$ docker inspect b25a62989527e7b0c9113300cdde9fb26354d96c863e942712d02dc2756c80ca
[
{
"CreatedAt": "2020-08-30T11:35:15+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/b25a62989527e7b0c9113300cdde9fb26354d96c863e942712d02dc2756c80ca/_data",
"Name": "b25a62989527e7b0c9113300cdde9fb26354d96c863e942712d02dc2756c80ca",
"Options": null,
"Scope": "local"
}
]
# 查看数据卷绑定的主机目录
$ sudo ls /var/lib/docker/volumes/b25a62989527e7b0c9113300cdde9fb26354d96c863e942712d02dc2756c80ca/_data
auto.cnf client-cert.pem ib_logfile0 ibtmp1 private_key.pem server-key.pem
ca-key.pem client-key.pem ib_logfile1 mysql public_key.pem sys
ca.pem ib_buffer_pool ibdata1 performance_schema server-cert.pem
从上面的操作可以看出,数据库数据实际保存的位置在主机的目录下,这样就可以实现 MySQL 容器的数据持久化了。
使用
docker inspect <image|container|volume>
命令可以查看镜像、容器或数据卷的详情信息,比如查看运行的容器端口映射、环境变量或目录绑定等的情况。
使用 Docker 搭建数据库环境,不管是单节点还是集群,只需要很简单的操作就能实现,再也不用担心虚拟机消耗太多的电脑资源,也不用担心环境之间有什么差异,因此,我们在学习过程中,只需要关注知识点功能的实现。
码匠
微信ID: CodeArtist
《》
《》
《》新
以上是关于Docker中MySQL的安装与实践的主要内容,如果未能解决你的问题,请参考以下文章