Docker desktop安装mysql过程
作者:滄鎟あ
文章介绍了如何在本地已有的Docker环境中拉取并启动MySQL容器,并详细说明了常用的环境变量参数,此外,还讨论了如何通过挂接本地磁盘来持久化MySQL数据,从而避免数据丢失
Docker desktop安装mysql
首先本地已经有 docker 环境存在,然后可以拉取 MySQL 镜像。
相关mysql仓库地址
https://hub.docker.com/_/mysql/
# 镜像拉取 docker pull mysql:8.0.26 docker pull mysql:latest # 查看镜像列表 docker image ls
等待镜像完成之后就可以启动mysql了
注意需要配置一些启动参数
# 启动命令 docker run -it --name mysql -p 13306:3306 -e MYSQL_ROOT_PASSWORD=12345678 mysql:8.0.28 # 如果要后台启动加-d参数 docker run -itd --name mysql -p 13306:3306 -e MYSQL_ROOT_PASSWORD=12345678 mysql:8.0.28 # 查看容器 docker ps # 查看容器,包括已经停止的 docker ps -a # 停止镜像 docker kill 容器id # 再次启动已经停止的容器 docker start 容器id
MySQL 提供了很多环境变量参数
可以自定义 MySQL 环境
常用的如下:
参考地址:https://dev.mysql.com/doc/refman/5.7/en/environment-variables.html
参数名 | 说明 | 默认值 |
---|---|---|
MYSQL_ROOT_PASSWORD | root 用户的密码 | my-secret-pw |
MYSQL_DATABASE | 自定义新数据库名称 | |
MYSQL_USER | 自定义用户名 | |
MYSQL_PASSWORD | 自定义用户密码 | |
MYSQL_ALLOW_EMPTY_PASSWORD | 是否允许启动 root 密码是空密码:非空表示 yes | 空表示 no |
MYSQL_RANDOM_ROOT_PASSWORD | 使用随机 root 密码,一般从日志中查找密码:非空表示 yes | 空表示 no |
MYSQL_ONETIME_PASSWORD | root 使用一次性密码:非空表示 yes,登录后强制要求修改 | 空表示 no |
MYSQL_INITDB_SKIP_TZINFO | CONVERT_TZ() 获取时区,非空表示 disable |
一般使用MYSQL_ROOT_PASSWORD
就可以了
上面的情况下启动的 MySQL 能够满足基本需求,不过每次重启之后数据就丢失了,就算是开发环境这样也不能接受的,需要挂接本地磁盘,方便下次可以访问。
首先可以选择一个本地文件路径,如:C:/MySQL/data
,然后映射到/var/lib/mysql
,增加命令参数: -v C:/MySQL/data:/var/lib/mysql
,
完整命令:
docker run -itd --name mysql -p 13306:3306 -e MYSQL_ROOT_PASSWORD=12345678 -v D:\DockerRepmysql\data:/var/lib/mysql -v D:\DockerRep\mysql\conf/conf.d:/etc/mysql/conf.d mysql:8.0.28
docker run --name mysql -v D:\DockerRep\mysql\conf:/etc/mysql -v D:\DockerRep\mysql\log:/var/log -v D:\DockerRep\mysql\data:/var/lib/mysql -v D:\DockerRep\mysql\conf\conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=jecn@123 -d -i -p 13306:3306 mysql:5.7.37
如果还要自定义配置文件可以再增加:
D:\DockerRep\mysql\conf/conf.d:/etc/mysql/conf.d
然后可以用客户端登录了,而且下次启动不会丢失数据。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。