目录
- [1. 检查WSL配置](#1. 检查WSL配置)
- [2. 设置WSL版本](#2. 设置WSL版本)
- [3. 拉取MySQL镜像](#3. 拉取MySQL镜像)
- [4. 验证镜像](#4. 验证镜像)
- [5. 运行MySQL容器](#5. 运行MySQL容器)
- [6. 管理容器](#6. 管理容器)
- [7. 连接通过Docker部署的MySQL容器](#7. 连接通过Docker部署的MySQL容器)
- [8. Redis部署](#8. Redis部署)
1. 检查WSL配置
检查当前 Windows Subsystem for Linux (WSL) 的配置,确保Linux系统和docker桌面版使用同一个版本的WSL
bash
wsl --list --verbose

2. 设置WSL版本
如果WSL版本不统一,可通过以下命令更改WSL配置
bash
wsl --set-version <distribution name> <versionNumber>
bash
wsl --set-version Ubuntu-22.04 2
参考网址:将 WSL 版本设置为 1 或 2
3. 拉取MySQL镜像
从Docker Hub拉取MySQL镜像:
bash
docker pull mysql:8.4
检查已下载的Docker镜像:
4. 验证镜像
bash
docker images

5. 运行MySQL容器
在WSL环境中使用以下命令启动MySQL容器
bash
docker run -p 4406:3306 --name mysql-8.4 \
-v "mysql-data:/var/lib/mysql" \
-v "mysql-conf:/etc/mysql/conf.d" \
-v "mysql-log:/var/log/mysql" \
-v "mysql-files:/var/lib/mysql-files" \
-e MYSQL_ROOT_PASSWORD=root -d mysql:8.4 \
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
在创建容器时,若未显式指定宿主机挂载路径,Docker将自动生成/var/lib/docker/volumes/mysql-data/_data
等匿名卷,并与MySQL容器建立挂载关联 参考文章:docker安装mysql并实现数据卷挂载
查看容器/镜像的完整信息
bash
docker inspect mysql-8.4
json
"Mounts": [
{
"Type": "volume",
"Name": "mysql-data",
"Source": "/var/lib/docker/volumes/mysql-data/_data",
"Destination": "/var/lib/mysql",
"Driver": "local",
"Mode": "z",
"RW": true,
"Propagation": ""
},
...
]
显式指定宿主机挂载路径
bash
docker run -p 4406:3306 --name mysql-8.4 \
-v "/var/lib/docker/mysql8.4/data:/var/lib/mysql" \
-v "/var/lib/docker/mysql8.4/conf:/etc/mysql/conf.d" \
-v "/var/lib/docker/mysql8.4/log:/var/log/mysql" \
-v "/var/lib/docker/mysql8.4/mysql-files:/var/lib/mysql-files" \
-e MYSQL_ROOT_PASSWORD=root -d mysql:8.4 \
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
json
"Mounts": [
{
"Source": "/var/lib/docker/mysql8.4/data",
"Destination": "/var/lib/mysql",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
},
...
}
可选:在Windows的cmd中使用以下命令启动MySQL容器
bash
docker run -p 4406:3306 --name mysql-8.4 -v "mysql-data:/var/lib/mysql" -v "mysql-conf:/etc/mysql/conf.d" -v "mysql-log:/var/log/mysql" -v "mysql-files:/var/lib/mysql-files" -e MYSQL_ROOT_PASSWORD=root -d mysql:8.4 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

这个 docker run
命令用于启动一个 MySQL 8.4 容器,并将数据、配置和日志持久化存储在宿主机的 /mnt/d/docker/mysql8.4/
目录下。下面是对每个参数的详细解释:
参数 | 说明 |
---|---|
docker run |
启动一个新容器 |
-p 4406:3306 |
端口映射:将宿主机的 4406 端口映射到容器的 3306 (MySQL 默认端口) |
--name mysql-8.4 |
为容器指定名称 mysql-8.4 |
-d |
后台运行容器(守护进程模式) |
mysql:8.4 |
使用的镜像 |
6. 管理容器
启动已创建的容器
bash
docker start mysql-8.4
查看运行中的容器
bash
docker ps

查看容器的日志
bash
docker logs mysql-8.4

通过docker进入mysql命令行
bash
docker exec -it mysql bash
按住Ctrl+d
可退出mysql命令行
查看文件资源在宿主机的映射

对比mysql容器内部文件发现所有文件成功映射

7. 连接通过Docker部署的MySQL容器
注意此处的端口为将容器的3306
端口的映射到宿主机的4406
端口

8. Redis部署
同样的启动方法可以在docker部署Redis容器(WSL)
bash
docker pull redis:8.0.2
bash
cd /var/lib/docker/redis8/conf/
sudo touch redis.conf
sudo chmod 777 redis.conf
vim redis.conf
在redis.conf中使用vim编辑器写入
conf
requirepass [your_password] # 设置密码
appendonly yes # 持久层相关
bash
docker run -p 5379:6379 --name redis-8.0.2 \
-v /var/lib/docker/redis8/data:/data \
-v /var/lib/docker/redis8/conf/redis.conf:/etc/redis/redis.conf \
-d redis:8.0.2 \
redis-server /etc/redis/redis.conf
bash
docker start redis-8.0.2
bash
docker exec -it redis-8.0.2 bash
# redis-cli
> auth mq20011103
OK
> set name abc
OK
> get name
"abc"
>