一,创建redis docker
拉取docker包
docker pull redis
拉取完成查看:docker images
准备工作
创建docker目录环境
mkdir /docker/test/redis/data -p
部署容器
docker stop redis
docker rm redis
docker run --privileged=true --restart=always --name redis -p 6379:6379 -v /docker/test/redis/data:/data -d redis --requirepass "test520&"
–privileged=true:容器内的Root拥有真正Root权限,否则容器内Root只是外部普通用户权限
-restart=always:容器Docker的时候,自动重启Redis容器
-d # 表示在一直在后台运行容器
-p 9999:9999 # 对端口进行映射,将本地9999 端口映射到容器内部的9999端口
--name # 设置创建的容器名称
--requirepass "test520&" 设置数据库密码
appendonly yes #redis持久化(可选)
查看docker redis运行
![](https://i-blog.csdnimg.cn/blog_migrate/ac92da8419b683a70cb2835817cad472.png)
配置外网可以访问
而后使用windows ping raw.githubusercontent.com 得知真实ip为151.101.8.133,接着回到linux 修改vim /etc/hosts文件
echo "151.101.8.133 raw.githubusercontent.com">>/etc/hosts
下载redis.conf
mkdir /docker/test/redis/conf -p
wget -c https://raw.githubusercontent.com/redis/redis/4.0/redis.conf -O /docker/test/redis/conf/redis.conf
配置外网可以访问:
更改redis.conf 文件
bind 127.0.0.1
protected-mode yes
更改为
# bind 127.0.0.1
protected-mode no
修改配置
sed -i 's/bind 127.0.0.1/#bind 127.0.0.1/g' /docker/test/redis/conf/redis.conf
sed -i 's/protected-mode yes/protected-mode no/g' /docker/test/redis/conf/redis.conf
![](https://i-blog.csdnimg.cn/blog_migrate/617193ec20b7ffcf53d663ecf73d273c.png)
重新部署容器
docker stop redis
docker rm redis
docker run --privileged=true --restart=always --name redis -p 6379:6379 -v /docker/test/redis/data:/data -v /docker/test/redis/conf/redis.conf:/etc/redis/redis.conf -d redis --requirepass "test520&"
二,docker常见问题
redis中数据持久化问题
持久化命令:
1.主动持久化save,执行save命令,会将全部的进程先挂起,直到save命令执行完成后,后续的进程才能执行,也就是会造成线程阻塞;
2.后台持久化bgsave,不会马上数据备份,不会造成线程阻塞。