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

补充知识

如果你只是想单纯的部署一个redis,开启持久化,并且设置密码,以下的命令完全能满足你:

docker run -d --name myredis  -p 6378:6379 redis  --appendonly yes  --requirepass password

解决方案

问: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=enforcingSELINUX=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 

参考文献:官方文档:docker中redis安装说明

你可能感兴趣的:(docker,redis,数据库)