目录
- 1. 检查WSL配置
- 2. 设置WSL版本
- 3. 拉取MySQL镜像
- 4. 验证镜像
- 5. 运行MySQL容器
- 在WSL环境中使用以下命令启动MySQL容器
- 查看容器/镜像的完整信息
- 显式指定宿主机挂载路径
- 可选:在Windows的cmd中使用以下命令启动MySQL容器
- 6. 管理容器
- 启动已创建的容器
- 查看运行中的容器
- 查看容器的日志
- 通过docker进入mysql命令行
- 7. 连接通过Docker部署的MySQL容器
- 8. Redis部署
1. 检查WSL配置
检查当前 Windows Subsystem for Linux (WSL) 的配置,确保Linux系统和docker桌面版使用同一个版本的WSL
wsl --list --verbose
2. 设置WSL版本
如果WSL版本不统一,可通过以下命令更改WSL配置
wsl --set-version <distribution name> <versionNumber>
wsl --set-version Ubuntu-22.04 2
参考网址:将 WSL 版本设置为 1 或 2
3. 拉取MySQL镜像
从Docker Hub拉取MySQL镜像:
docker pull mysql:8.4
检查已下载的Docker镜像:
4. 验证镜像
docker images
5. 运行MySQL容器
在WSL环境中使用以下命令启动MySQL容器
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并实现数据卷挂载
查看容器/镜像的完整信息
docker inspect mysql-8.4
"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": ""},...
]
显式指定宿主机挂载路径
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
"Mounts": [{"Source": "/var/lib/docker/mysql8.4/data","Destination": "/var/lib/mysql","Mode": "","RW": true,"Propagation": "rprivate"},...
}
可选:在Windows的cmd中使用以下命令启动MySQL容器
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. 管理容器
启动已创建的容器
docker start mysql-8.4
查看运行中的容器
docker ps
查看容器的日志
docker logs mysql-8.4
通过docker进入mysql命令行
docker exec -it mysql bash
按住Ctrl+d
可退出mysql命令行
查看文件资源在宿主机的映射
对比mysql容器内部文件发现所有文件成功映射
7. 连接通过Docker部署的MySQL容器
注意此处的端口为将容器的3306
端口的映射到宿主机的4406
端口
8. Redis部署
同样的启动方法可以在docker部署Redis容器(WSL)
docker pull redis:8.0.2
cd /var/lib/docker/redis8/conf/
sudo touch redis.conf
sudo chmod 777 redis.conf
vim redis.conf
在redis.conf中使用vim编辑器写入
requirepass [your_password] # 设置密码
appendonly yes # 持久层相关
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
docker start redis-8.0.2
docker exec -it redis-8.0.2 bash
# redis-cli
> auth mq20011103
OK
> set name abc
OK
> get name
"abc"
>