在学习docker的过程中尝试安装redis提供服务给本地开发环境,由于在windows环境下开发所以使用docker-desktop+wsl模式下运行,具体安装过程这里不展示。
1.挂载配置文件与存储目录
刚开始的时候想挂载在docker运行的宿主wsl子系统中,docker-desktop运行时会启动docker-desktop与docker-desktop-data子系统,分别在里面的创建目录和配置文件,尝试了多种方式都没挂载成功。后面开始尝试挂载在windows文件系统下,wsl进入子系统可以看到/mnt下已经有各个盘符,立刻执行
docker run --restart=always -p 6379:6379 --name localredis \
-v /mnt/d/redis/redis.conf:/etc/redis/redis.conf \
-v /mnt/d/redis/data:/data \
-d redis:latest redis-server /etc/redis/redis.conf
还是成功,经过一轮检索在docker desktop win10挂载问题解决找到了答案/mnt/d
要改为//d
,最后成功挂载
docker run --restart=always -p 6379:6379 --name localredis \
-v //d/redis/redis.conf:/etc/redis/redis.conf \
-v //d/redis/data:/data \
-d redis:latest redis-server /etc/redis/redis.conf
2.连接redis报错
当镜像直接启动时没问题,但是使用我挂载的一个默认配置文件后,使用java后端尝试连接时报错
Unable to init enough connections amount Only 20 of 24 were initialized
寻思是一定是配置不一样,后来排查发现镜像直接启动bind配置为* -::*
,默认配置文件为127.0.0.1 -::1
把bind配置注释后连接成功。