WIN11安装Docker,并启动连接MySQL

起因:新买了一台电脑,需要安装开发环境,本地安装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!!!