docker 安装redis
docker 安装reids
- 缘
- 一. 默认配置文件部署
- 极简部署
- 3. redis持久化
- 使用自己的配置文件部署
- Dockerfile部署
- docker 命令部署并设置配置文件
- 解决方案
- 问:find: '.': Permission denied
- 解决方案一: 创建`volume`映射
- 解决方案二:关闭SELINUX
- 问:can't open config file 'redis.conf'
- 解决方案
- 1.查看容器中是否存在redis.conf
- 查看映射目录是否有文件
- 如果确定没有,则可通过以下命令导入:
- 参考文献:[官方文档:docker中redis安装说明](https://hub.docker.com/_/redis)
缘
好久不见!忙了好久,终于,偷得半日闲。
今天同事要打包容器去第三方k8s部署,而在安装redis时出现了问题,设置的密码未生效或者找不到配置文件等问题。就想着自己写一个docker
安装redis
的教程以作记录,直接上代码。
一. 默认配置文件部署
极简部署
docker run --name myredis -d redis
3. redis持久化
如果有写入操作,则60秒执行一次保存一次数据库快照。
docker run --name myredis -d redis redis-server --save 60 1 --loglevel warning
如需讲快照保存到本地,则docker命令为下面的命令:
如需自定义保存位置,可在 -v参数后修改保存位置
docker run -v /docker/host/dir:/data --name myredis -d redis redis-server --save 60 1 --loglevel warning
#或者映射当前目录至容器内,命令:
docker run -v $PWD:/data --name myredis -d redis redis-server --save 60 1 --loglevel warning
使用自己的配置文件部署
Dockerfile部署
注意修改copy参数中本地文件路径
FROM redis
COPY redis.conf /usr/local/etc/redis/redis.conf
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
docker 命令部署并设置配置文件
docker run -v /myredis/conf:/usr/local/etc/redis --name myredis redis redis-server /usr/local/etc/redis/redis.conf
解决方案
问:find: ‘.’: Permission denied
问题详情:
[root@localhost data]# docker logs myredis
find: '.': Permission denied
chown: changing ownership of '.': Permission denied
解决方案一: 创建volume
映射
看下参数介绍:
[root@localhost data]# docker volume --help
Commands:
create Create a volume
inspect Display detailed information on one or more volumes
ls List volumes
prune Remove all unused volumes
rm Remove one or more volumes
创建及查看volume目录
[root@localhost data]# docker volume create redis_data
redis_data
[root@localhost data]# docker volume inspect redis_data
[
{
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/redis_data/_data",
"Name": "redis_data",
"Options": {},
"Scope": "local"
}
]
通过volume执行容器创建命令:
docker run -v redis_data:/data --name myredis -d redis
Mountpoint
就是系统生成的目录。
可在创建容器后通过新增删除测试容器内外效果。
注意:使用 volume 是不能指定 volume 位置的。可以通过软连接把目录映射出来。有兴趣的可以测试一下。命令给你们:
ln -s 源目录 目的目录
解决方案二:关闭SELINUX
临时关闭
getenforce #查看SELinux状态 permissive关闭状态 enforcing开启状态
setenforce 0 #临时关闭
setenforce 1 #临时开启
永久关闭
编辑文件 /etc/selinux/config
文件
修改 SELINUX=enforcing
为SELINUX=permissive
问:can’t open config file ‘redis.conf’
详情:
Fatal error, can't open config file '/usr/local/etc/redis/redis.conf': No such file or directory
解决方案
1.查看容器中是否存在redis.conf
进入容器查看配置文件是否存在
查看映射目录是否有文件
自己去目录下看有没有
如果确定没有,则可通过以下命令导入:
docker cp ./redis.conf myredis:/usr/local/etc/redis/redis.conf