1.shell脚本

  1. #!/bin/bash
  2. yum install -y gcc gcc-c++ make openssl openssl-devel
  3. cd /home/redis-4.0.9
  4. make && make PREFIX=/usr/local/redis install
  5. mkdir -p /usr/local/redis/conf/
  6. cp /home/redis-4.0.9/redis.conf /usr/local/redis/conf/
  7. sed -i '69s/127.0.0.1/0.0.0.0/' /usr/local/redis/conf/redis.conf
  8. sed -i '88s/protected-mode yes/protected-mode no/' /usr/local/redis/conf/redis.conf

2.Dockerfile

  1. FROM centos:7
  2. ADD redis-4.0.9.tar.gz /home
  3. COPY redis_install.sh /home
  4. RUN sh /home/redis_install.sh
  5. ENTRYPOINT /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf

4.打包运行

  1. # 启动容器:6380是宿主机端口,6379是容器的端口
  2. docker run -itd -p 6380:6379 mycentos:redis
  3. # 进入容器:
  4. docker exec -it 9b402baeaba7 /bin/bash
  5. # 宿主机连接redis:
  6. /usr/local/redis/bin/redis-cli -p 6380
  7. # 验证:
  8. [root@localhost home]# /usr/local/redis/bin/redis-cli -p 6380
  9. 127.0.0.1:6380> set name xdclass
  10. OK
  11. 127.0.0.1:6380> get name
  12. "xdclass"
  13. 127.0.0.1:6380>

5.修改配置

docker中的redis是处于保护模式的,并且监听的是127.0.0.1。所以外界不能操作该redis。

  1. # 进入容器
  2. docker exec -it 9b402baeaba7 /bin/bash
  3. # 修改配置
  4. vi /usr/local/redis/conf/redis.conf
  5. # 搜索protected-mode
  6. :/protected-mode
  7. # 修改
  8. protected-mode no
  9. # 搜索bind 127.0.0.1
  10. :/bind 127.0.0.1
  11. # 注释掉这行配置即可。
  12. bind 127.0.0.1
  13. # 退出容器
  14. exit
  15. # 重启容器
  16. docker restart 84573929a97b

6.连接测试

此时在宿主机中,你可以连接宿主机的6380,可以访问到docker机。
你也可以直接访问docker机的IP+6379访问。

  1. # 宿主机访问
  2. /usr/local/redis/bin/redis-cil -p 6380
  3. # 查看docker机信息
  4. docker inspect 84579329a97b
  5. # 找到NetworkSettings>>IPAddress,这就是Docke机的IP
  6. # docker机IP访问
  7. /usr/local/redis/bin/redis-cil -h 172.17.0.3 -p 6379