docker 使用 redis
一、docker 安装操作 redis 步骤
1,查看镜像仓库是否存在redis镜像
docker search redis
2,拉取redis镜像
docker pull redis
3,启动redis
默认情况下,Docker将在前台运行命令。要在后台运行,需要指定选项-d
docker run --name myredis -d -p 6739:6739 redis
4,redis 交互
docker exec -it myredis bash
cd /usr/local/bin
./redis-cli
or
docker exec -it myredis redis-cli


到此为止,外界还无法访问
【注】以下坑较多,慢慢来
- 坑1:挂载宿主机路径没有权限
docker run -d -p 6380:6380 --name myredis1 -v /usr/local/dev/docker-redis6380/redis.conf:/usr/local/etc/redis/redis.conf redis redis-server /usr/local/etc/redis/redis.conf
其中 -v /usr/local/dev/docker-redis6380/redis.conf:/usr/local/etc/redis/redis.conf
为:-v [宿主机路径]:[容器内路径]
【问题描述】
查看宿主机发现没有/usr/local/dev/docker-redis6380目录,手动创建目录发现没有权限,所以应该是因为没有权限导致创建失败
【解决办法】
解决办法有两种:
1,切换到root用户执行
2,修改宿主机路径为当前用户下有权限的路径
为了安全考虑采用第2种方案:
其种宿主机的 /Users/sg99065ml/docker-redis6379/ 是一个当前用户有权限的目录
docker run -d -p 6379:6379 --name myredis2 -v /Users/docker-redis6379/redis.conf:/usr/local/etc/redis/redis.conf redis redis-server /usr/local/etc/redis/redis.conf/redis.conf
- 坑2:redis容器内没有redis.conf文件,需要手动下载
【问题描述】
发现还是没有宿主机的挂在路径的redis.conf只是一个文件夹,文件夹下什么也没有,经搜索发现会存在docker安装redis时容器内没有reids.conf的情况,可参考【3】
【解决办法】
官网下载对应版本的redis.conf文件
官网下载地址:https://redis.io/topics/config
在宿主机对应的目录下创建redis.conf文件,把官网配置拷贝到文件中
- 坑3:无法容器外访问
【问题描述】
通过lsof -i: 6379查看,发现服务已经起来,端口已经监听,但是却无法在容器外进行访问
【解决办法】
redis.conf
文件中的 bind 127.0.0.1
修改为 bind 0.0.0.0
,这样容器外就可以访问了
需要删除之前的容器,然后重新启动,启动命令
docker run -d -p 6379:6379 --name myredis2 -v /Users/docker-redis6379/redis.conf:/usr/local/etc/redis/redis.conf redis redis-server /usr/local/etc/redis/redis.conf/redis.conf
二、注意
- 【注1】在宿主机中操作文件也会影响到容器内,共用映射目录
- 【注2】
redis
的容器内部没有 vi vim cat这些命令,所以映射是很有必要的 - 【注3】
redis.conf
文件中的daemonize yes
与 启动命令参数的-d
效果一致,如果都采用,则容器启动不起来 - 【注4】
redis.conf
文件中的bind 127.0.0.1
修改为bind 0.0.0.0
,这样容器外就可以访问了
三、参考
【1】docker部署redis实战:https://zhuanlan.zhihu.com/p/70110697
【2】Docker安装部署redis
【3】【Docker】解决创建Redis容器没有conf配置文件:https://blog.csdn.net/fangkang7/article/details/100642695
【4】Homebrew安装Redis找不到redis.conf文件
【5】Redis启动和停止(Ubuntu):https://blog.csdn.net/panlee1991/article/details/82931582
【6】Docker(十七)-修改Docker容器启动配置参数
【7】使用docker启动redis容器失败的原因:https://blog.csdn.net/woshihedayu/article/details/116855772