美文网首页
Docker安装Redis以及遇到的坑

Docker安装Redis以及遇到的坑

作者: Gallrax | 来源:发表于2018-07-23 22:01 被阅读0次

    搭建Docker

    省略一万步

    搭建Redis

    我使用的是阿里云镜像
    进去之后直接搜索Redis

    image.png
    首先我们肯定会选择加速器进行下载,毕竟国内访问docker官方仓库肯定是特别慢的。

    配置阿里云仓库

    按照官方文档提示走就可以,只需配置一条即可


    image.png

    我的配置:


    image.png
    配置之后重新加载配置文件
    sudo systemctl daemon-reload
    

    重新启动docker

    sudo systemctl restart docker
    

    配置Redis

    下载redis镜像

    docker pull redis
    
    image.png

    配置data、conf

    mkdir -p ./docker/redis/data
    mkdir -p ./docker/redis/conf
    

    增加redis.conf

    我是本身centos中已经有redis,直接cp就ok

    配置redis.conf

    配置外网访问
    原文件:

    bind 127.0.0.1
    protected-mode yes
    appendonly no//持久化
    # requirepass foobared
    

    修改后:

    #bind 127.0.0.1
    protected-mode no
    appendonly yes//持久化
    requirepass yourpassword
    

    ps:

    protected-mode 是在没有显示定义 bind 地址(即监听全网断),又没有设置密码 requirepass
    时,只允许本地回环 127.0.0.1 访问。 也就是说当开启了 protected-mode 时,如果你既没有显示的定义了 bind
    监听的地址,同时又没有设置 auth 密码。那你只能通过 127.0.0.1 来访问 redis 服务
    

    启动redis

    创建并运行一个名为 myredis 的容器

    docker run \
    -p 6379:6379 \
    -v /usr/mine/program/docker/redis/data:/data \
    -v /usr/mine/program/docker/redis/conf/redis.conf:/etc/redis/redis.conf \
    --privileged=true \
    --name myredis \
    -d docker.io/redis:latest redis-server /etc/redis/redis.conf
    

    命令分解

    docker run \
    -p 6379:6379 \ # 端口映射 宿主机:容器
    -v /docker/redis/data:/data:rw \ # 映射数据目录 rw 为读写
    -v /docker/redis/conf/redis.conf:/etc/redis/redis.conf:ro \ # 挂载配置文件 ro 为readonly
    --privileged=true \ # 给与一些权限
    --name myredis \ # 给容器起个名字
    -d docker.io/redis:latest redis-server /etc/redis/redis.conf # deamon 运行 服务使用指定的配置文件
    

    查看状态

    docker ps
    
    image.png

    ps:

    其实在文档之前我是遇到一个BUG的,docker ps什么都没有,百度了一下是因为权限问题。
    

    问题原因及解决办法

       原因是CentOS7中的安全模块selinux把权限禁掉了,至少有以下三种方式解决挂载的目录没有权限的问题:
       1.在运行容器的时候,给容器加特权,及加上 --privileged=true 参数:
       docker run -i -t -v /soft:/soft --privileged=true 686672a1d0cc /bin/bash(我选择了这种)
       2.临时关闭selinux:
       setenforce 0
       3.添加selinux规则,改变要挂载的目录的安全性文本
          $ chcon -Rt svirt_sandbox_file_t /docker/redis/data
    

    解决方案:Docker挂载主机目录Docker访问出现Permission denied的解决办法

    客户端测试

    docker exec -it myredis /bin/bash
    redis-cli -a yourpassword
    ...
    

    结束

    大功告成
    docker应该还有很多坑,毕竟采用的是沙盒机制,层层隔离,因为会牵扯到很多安全问题,这只是个入门。

    相关文章

      网友评论

          本文标题:Docker安装Redis以及遇到的坑

          本文链接:https://www.haomeiwen.com/subject/nihsmftx.html