首先本地已经有docker环境存在,然后可以拉取MySQL镜像。
地址
相关mysql仓库地址:
https://hub.docker.com/_/mysql/
拉取MySQL镜像
# 镜像拉取 docker pull mysql:8.0.26
docker pull mysql:latest
# 查看镜像列表
docker image ls
等待镜像完成之后就可以启动mysql了,注意需要配置一些启动参数
启动MySQL镜像
# 启动命令
docker run -it --name mysql-name -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:latest
# 如果要后台启动加-d参数
docker run -itd --name mysql-name -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:latest
# 查看容器
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-name -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v C:/MySQL/data:/var/lib/mysql mysql:latest
如果还要自定义配置文件可以再增加:-v C:/MySQL/config:/etc/mysql/conf.d
然后可以用客户端登录了,而且下次启动不会丢失数据。