Dockerfile构建redis

1. 编写redis编译安装shell脚本redis_install.sh

#!/bin/bash
yum install -y gcc gcc-c++ make openssl openssl-devel
cd /home/redis-4.0.9
make && make PREFIX=/usr/local/redis install
mkdir -p /usr/local/redis/conf/
cp /home/redis-4.0.9/redis.conf /usr/local/redis/conf/
sed -i '69s/127.0.0.1/0.0.0.0/' /usr/local/redis/conf/redis.conf  
#将配置文件中69行的127.0.0.1修改为0.0.0.0
sed -i '88s/protected-mode yes/protected-mode no/' /usr/local/redis/conf/redis.conf
#将配置文件中88行的protected-mode yes修改为protected-mode no

这里我是写在/home/目录下

dockerfile 安装allure dockerfile 安装redis_redis


别忘了将redis的压缩包上传进来,也是放在/home/目录下

dockerfile 安装allure dockerfile 安装redis_docker_02


解压压缩包。

dockerfile 安装allure dockerfile 安装redis_redis_03


解压之后执行脚本文件。

sh redis_install.sh

dockerfile 安装allure dockerfile 安装redis_docker_04


检验看是否安装成功。

echo $?

若执行之后返回0,则表示成功

dockerfile 安装allure dockerfile 安装redis_dockerfile 安装allure_05


说明:

echo $? :如果返回值是0,就是执行成功;如果是返回值是0以外的值,就是失败。进入redis目录查看一下,可以看到有一个名为conf的目录,这是redis的配置文件目录。

dockerfile 安装allure dockerfile 安装redis_dockerfile 安装allure_06


安装成功之后启动redis(默认的是以前台的方式启动redis)。

/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf

dockerfile 安装allure dockerfile 安装redis_配置文件_07


ctrl+c终止程序

dockerfile 安装allure dockerfile 安装redis_配置文件_08

2. 编写Dockerfile

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

dockerfile 安装allure dockerfile 安装redis_docker_09


创建镜像

docker build -t mycentos:redis .

dockerfile 安装allure dockerfile 安装redis_配置文件_10


创建成功。

dockerfile 安装allure dockerfile 安装redis_docker_11

3. 测试redis:

3.1 启动容器:

将redis的端口映射到宿主机。
查看宿主机的端口号

docker ps
docker run -itd -p 6380:6379 mycentos:redis #6380是宿主机端口,6379是容器的端口(默认的)

dockerfile 安装allure dockerfile 安装redis_docker_12


6380的端口监听这6379这个端口。

3.2 进入容器:
docker exec -it 9b402baeaba7 /bin/bash

dockerfile 安装allure dockerfile 安装redis_配置文件_13

查看redis的进程。

ps -ef | grep redis

dockerfile 安装allure dockerfile 安装redis_dockerfile 安装allure_14

127.0.0.1 :默认监听的是本机,不给任何机器远程连接。

3.3 宿主机连接redis:
/usr/local/redis/bin/redis-cli -p 6380
3.4 验证:
[root@localhost home]# /usr/local/redis/bin/redis-cli -p 6380
127.0.0.1:6380> set name xdclass
OK
127.0.0.1:6380> get name
"xdclass"
127.0.0.1:6380>

dockerfile 安装allure dockerfile 安装redis_配置文件_15


如果是想通过该ip连接进去怎么做???

  1. 找到容器的id
docker inspect 【容器id】

dockerfile 安装allure dockerfile 安装redis_dockerfile 安装allure_16


找到networksettings,然后找到网关和容器的ip地址。

dockerfile 安装allure dockerfile 安装redis_dockerfile 安装allure_17


然后通过命令

/usr/local/redis/bin/redis-cli -h 172.17.0.2 -p 6379

进行连接。

**注意:**此时的端口号应该是6379而不是6380,因为远程连接进去的时候监听的是6379而不是6380.

dockerfile 安装allure dockerfile 安装redis_docker_18


用该方式启动之后可以看到端口号是6379而非6380

可能遇到的问题

dockerfile 安装allure dockerfile 安装redis_redis_19


redis启动了保护模式,需要在配置文件中进行修改

进入配置文件。

vi /usr/local/redis/conf/conf.redis

进入配置文件,将protected-mode yes改为protected-mode no

dockerfile 安装allure dockerfile 安装redis_配置文件_20

搜索blind 127.0.0.1

dockerfile 安装allure dockerfile 安装redis_dockerfile 安装allure_21


将blind 127.0.0.1注释掉,然后保存文件。

修改之后要重启一下容器才能成功。