docker-运行redis服务
环境说明
linux系统版本:lsb_release -a
docker 版本: docker -v
不同的操作系统以及软件版本,可能会遇到不一样的问题,一定要注意版本问题。
查看docker中 mysql的版本,可以去官网,需要kx上网才能打开。
https://hub.docker.com/
最好是确认自己的服务器已经设置阿里云的镜像加速,或者使用腾讯的,网易的都是可以的。
自己选,设置之后下载镜像的速度回快很多。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://registry-vpc.cn-hangzhou.aliyuncs.com"]
}
EOF
查看自己本地redis的版本号,为5.0.9
.1.拉取Redis镜像,尝试拉取指定版本的镜像。
可以正确拉取,如果有的版本拉取不到,说明官网可能没有这个版本,就需要换一个版本。
查看拉取的镜像 docker images
.2.运行redis服务。
docker run --name redis -p 6379:6379 -d 987b553c835f --requirepass "123456" --appendonly yes
参数解释:
docker run 表示运行redis容器
--name my-redis 表示给这个容器起一个名字
-p 6379:6379 表示将宿主机上3306端口映射到redis容器中的3306端口
-d 987b553c835f 表示在后台运行redis容器,987b553c835f表示镜像IMAGE ID
--requirepass "123456" 表示设置redis的密码
--appendonly yes 表示数据持久化
注意事项: 命令的顺序不能乱,-d 需要在 --requirepass 命令之前,否则执行会失败!
使用docker ps -a 查看所有的容器服务,如下
.3.登录阿里云服务器,打开远程端口6379;
控制台-->我的资源-->点击(实例)进入-->安全组-->安全组详情-->手动添加(入站规则)
真实项目中,建议不要使用默认端口,以防止被攻击。
.4.远程连接测试。
windows上连接redis的工具,使用的事RedisDesktopManager,
也可以根据自己的喜好去选择适合的工具。
测试连接成功。尝试着添加一条数据,发现可以正常添加。
.5.删除容器服务,重新启动服务。
因为测试需要,自己在这里重新拉取了redis6.0.8的版本。
.a.创建redis目录,redis数据保存目录;
下载redis配置文件。
从官网下载:http://download.redis.io/redis-stable/redis.conf
参考网友给的建议,创建配置文件,添加如下配置
#默认yes,开启保护模式,限制为本地访问
protected-mode no
# 绑定的主机地址,默认为 127.0.0.1,表示只允许本地访问
# bind 127.0.0.1
# 端口号,默认 6379
#port 6379
# Redis 数据库的数量,默认为 16
databases 10
# 日志级别,默认为 notice
loglevel notice
# 是否开启 AOF 持久化,默认关闭
aof-enabled no
requirepass root
.b.删除原有redis容器。
docker stop redis && docker rm redis
.c.重新创建新的容器
docker run --name redis \
-p 6379:6379 \
-v /opt/u01/exam/redis/redis.conf:/usr/local/etc/redis/redis.conf \
-v /opt/u01/exam/redis/data:/data \
-d 16ecd2772934 \
参数解释:
-v /opt/u01/exam/redis/redis.conf:/etc/redis/redis.conf 将宿主机上的配置文件挂载到redis容器中
-v /opt/u01/exam/redis/data:/data 将宿主机上的数据保存的目录,挂载到redis容器中
.6.远程连接测试,创建数,查看挂载路径和配置文件是否生效。
连接没问题,添加一条数据,然后查看文件大小是否有变动。
创建数据之前执行一次,创建数据之后查看文件内容有变动,说明数据目录挂载成功。
遇到的问题:配置的密码不生效。
根据网友的建议,使用如下命令重新创建容器,
docker run --name redis \
-p 6379:6379 \
-v /opt/u01/exam/redis/redis.conf:/usr/local/etc/redis/redis.conf \
-v /opt/u01/exam/redis/data:/data \
-d redis:6.0.8 redis-server /usr/local/etc/redis/redis.conf --appendonly yes
appendonly yes 表示设置数据持久化
结果报错,查看错误信息如下,大致地错误信息是配置文件错误。
配置错误,修改为
修改后重启容器,可正常远程连接。
参考博文
https://www.cnblogs.com/yufeng218/p/16240875.html
https://www.jianshu.com/p/9e4dd25b5e53
https://cloud.tencent.com/developer/article/2133215
https://www.cnblogs.com/qianmo123/p/17661084.html
https://cloud.tencent.com/developer/article/2166291