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/目录下
别忘了将redis的压缩包上传进来,也是放在/home/目录下
解压压缩包。
解压之后执行脚本文件。
sh redis_install.sh
检验看是否安装成功。
echo $?
若执行之后返回0,则表示成功
说明:
echo $? :如果返回值是0,就是执行成功;如果是返回值是0以外的值,就是失败。进入redis目录查看一下,可以看到有一个名为conf的目录,这是redis的配置文件目录。
安装成功之后启动redis(默认的是以前台的方式启动redis)。
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
按ctrl+c终止程序
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
创建镜像
docker build -t mycentos:redis .
创建成功。
3. 测试redis:
3.1 启动容器:
将redis的端口映射到宿主机。
查看宿主机的端口号
docker ps
docker run -itd -p 6380:6379 mycentos:redis #6380是宿主机端口,6379是容器的端口(默认的)
6380的端口监听这6379这个端口。
3.2 进入容器:
docker exec -it 9b402baeaba7 /bin/bash
查看redis的进程。
ps -ef | grep redis
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>
如果是想通过该ip连接进去怎么做???
- 找到容器的id
docker inspect 【容器id】
找到networksettings,然后找到网关和容器的ip地址。
然后通过命令
/usr/local/redis/bin/redis-cli -h 172.17.0.2 -p 6379
进行连接。
**注意:**此时的端口号应该是6379而不是6380,因为远程连接进去的时候监听的是6379而不是6380.
用该方式启动之后可以看到端口号是6379而非6380
可能遇到的问题
redis启动了保护模式,需要在配置文件中进行修改
进入配置文件。
vi /usr/local/redis/conf/conf.redis
进入配置文件,将protected-mode yes改为protected-mode no
搜索blind 127.0.0.1
将blind 127.0.0.1注释掉,然后保存文件。
修改之后要重启一下容器才能成功。