起因:新买了一台电脑,需要安装开发环境,本地安装MySQL过于麻烦,考虑到自身并不需要多么精准的MySQL配置(主要是感觉安装步骤过于繁琐麻烦,还容易装错),只需要能用就行,那么快捷,方便的需求,正好docker可以满足,下载镜像,启动容器,搞定,不用的时候,可以关闭容器,省心。win11版本正好提供了WSL,可以直接运行基于Linux内核的程序,连虚拟机VM都可以省了,简直不要太完美
安装windows版本的docker
下载 Docker Desktop for Windows 安装包
官网地址:https://docs.docker.com/
安装之前,查看电脑是否开启虚拟化
win+x,打开任务管理器,点击性能==》cpu==》虚拟化:已启用
ps:我的电脑是新买的,点击查看直接是开启的,如果没有,自行百度如何开启虚拟化
点击安装包安装,设置里面选择勾选WSL2,无脑安装
问题:1.点击图标启动docker,报:
Docker Desktop requires a newer WSL kernel version
百度翻译:
Docker Desktop需要更新的WSL内核版本。
win+x,管理员身份打开windows终端PowerShell
运行命令
wsl --update
进行更新
启动桌面docker图标
测试docker
终端输入命令
docker version
正常反馈信息
Client:
Cloud integration: v1.0.31
Version: 20.10.24
API version: 1.41
Go version: go1.19.7
Git commit: 297e128
Built: Tue Apr 4 18:28:08 2023
OS/Arch: windows/amd64
Context: default
Experimental: true
Server: Docker Desktop 4.18.0 (104112)
Engine:
Version: 20.10.24
API version: 1.41 (minimum version 1.12)
Go version: go1.19.7
Git commit: 5d6db84
Built: Tue Apr 4 18:18:42 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.18
GitCommit: 2456e983eb9e37e47538f59ea18f2043c9a73640
runc:
Version: 1.1.4
GitCommit: v1.1.4-0-g5fd4c4d
docker-init:
Version: 0.19.0
GitCommit: de40ad0
下面要改变下镜像源地址,默认配置的镜像源在国外,速度比较慢,改成国内的镜像,此步骤不改也行
点击小齿轮setting==》Docker Engine ==》
新增节点
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://mirror.ccs.tencentyun.com"
]
完整的配置
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"features": {
"buildkit": true
},
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://mirror.ccs.tencentyun.com"
]
}
点击Apply & restart,重启docker
点击Cancel返回主页面
下载MySQL镜像
终端运行命令
docker pull mysql
一般会下载最新版本latest
截至2023年4月16日,版本是8.0.32
镜像下载完成后,需要配置持久化数据到本地
D盘创建目录docker/mysql/conf,docker/mysql/data
这是mysql的配置文件和存储数据用的目录
切换到终端,输入命令,第一次启动MySQL容器
docker run --name mysql -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:latest \
--default-authentication-plugin=mysql_native_password
命令解释
run --name mysql
–name为容器指定名称为mysql
-p 3306:3306
指定端口映射,将主机端口3306映射到容器端口3306
-e MYSQL_ROOT_PASSWORD=123456
-e设置环境变量 ,设置root用户,密码123456
-d mysql:latest --default-authentication-plugin=mysql_native_password
-d后台运行,并返回容器ID ,mysql:latest 镜像名
–default-authentication-plugin=mysql_native_password
MySQL执行本地身份验证插件
MySQL8.0版本默认的身份验证插件caching_sha2_password,而不是mysql_native_password,两者的密码验证方式不同(用户连接数据库验密)
使用默认的密码可能登录会报错,没有验证
准备复制MySQL镜像中的配置文件到刚刚创建的本地持久化目录
D:/docker/mysql/conf/
打开docker桌面,点击Images镜像==》选择mysql镜像==》点击In use进入容器==》
点击name:mysql==》点击Files==》打开目录etc/my.cnf点击下载到目录D:/docker/mysql/conf/
关闭容器
终端执行命令
docker stop mysql
关闭容器
删除容器
docker rm mysql
重新启动容器,执行命令
docker run --name mysql -p 3306:3306 \
-v /d/docker/mysql/data:/var/lib/mysql/ \
-v /d/docker/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:latest \
--default-authentication-plugin=mysql_native_password
-v /d/docker/mysql/data:/var/lib/mysql/
映射主机目录d盘的/docker/mysql/data 到容器的/var/lib/mysql/目录
容器MySQL持久化本地目录完成
测试本地客户端连接MySQL数据库
url:127.0.0.1:3306
name:root
password:123456
测试成功!!!
打开本地MySQL数据持久化目录/docker/mysql/data,可以发现已经有了很多文件
验证持久化
创建新的库和表,插入数据后,stop容器,start容器,重新用客户端连接,查看数据还在
启动速度惊人,NB!!!