介绍
介绍
大家根福哥学会了使用Dockerfile创建Docker镜像的技巧了,那么我们现在搭建服务器环境就不需要再去下载软件的源代码了,也不需要编译安装了,更加不用操心软件和操作系统的各种兼容问题了。
今天福哥带着大家来安装redis的环境,Redis是数据库引擎,和php、python不同之处在于Redis是不能简单地通过k8s进行负载均衡的,而且Redis的数据库的数据会持续更新需要持久化保存起来,这些我们在本课都可以跟福哥学到。
镜像
tag
虽然Redis已经出了6.2版本,但是福哥还是选择了兼容性比较好的6.0版本。
结构
照例我们先把镜像拉取下来,然后启动一个容器,看看里面都有什么,弄明白了自己才好捣鼓啊!
拉取镜像
docker pull redis:6.0-buster
创建数据卷
和前面的php和python不同,我们需要建立一个数据卷用来给Redis存储数据使用。
docker volume create redis6.0
启动临时容器
启动容器的时候需要指定数据卷映射到容器内部,因为默认redis没有配置文件,所以我们先映射到/var/lib/redis下面。
docker run -tid --name redis6.0 -h redis6.0 -v redis6.0:/var/lib/redis redis:6.0-buster
切入临时容器
docker exec -ti redis6.0 /bin/bash
查看结构
进入容器后,全局查找一番,发现完全没有配置文件。。。
停止临时容器
docker stop redis6.0
删除临时容器
docker rm redis6.0
手动安装
福哥先在临时容器里面手动安装一遍环境,然后再整理到Dockerfile里面,这样大家会看得比较清楚一些~~
配置文件
福哥这边整理了一些基础的配置参数保存到自定义配置文件/usr/local/etc/redis/redis.conf里面。
/usr/local/etc/redis/redis.conf
# host and port bind 0.0.0.0 port 6379 # data maxmemory 268435456 dbfilename dump.rdb dir /var/lib/redis # security requirepass tongfu.net
测试
因为在容器里面已经启动了一个6379端口的实例了,福哥只能临时把端口改成6380了。
可以看到新启动的Redis实例的端口已经是6380了,而且设置了安全密码是tongfu.net。
可以看到通过info查看的最大内存是福哥设置的256M。
Dockerfile
最后福哥把前面的设置命令整理到一起写成Dockerfile,这样大家就可以通过Dockerfile安装环境了。
redis.conf
首先福哥建立了一个配置文件redis.conf,把自定义的参数写到里面去,导入到镜像里面。
# host and port bind 0.0.0.0 port 6379 # data maxmemory 268435456 dbfilename dump.rdb dir /var/lib/redis # security requirepass tongfu.net
Dockerfile
创建Dockerfile,将redis.conf导入进来,用完后再删除掉。
FROM redis:6.0-buster MAINTAINER Andy Bogate MAINTAINER tongfu@tongfu.net MAINTAINER http://docker.tongfu.net EXPOSE 6379 # config RUN mkdir /usr/local/etc/redis \ && mkdir /var/lib/redis ADD redis.conf /usr/local/etc/redis/redis.conf # run by redis.conf CMD ["redis-server", "/usr/local/etc/redis/redis.conf"]
创建完镜像,启动一个容器,进去里面登入redis终端,可以看到我们在redis.conf里设置的参数生效了!
总结
今天福哥带着大家使用Dockerfile搭建了Redis微服务环境了,可以发现使用Dockerfile方式搭建环境我们真的只需要关心我们需要关心的部分,繁琐的编译参数、依赖库、环境参数等等一系列的问题基础镜像都给我们解决好了。
下一课,福哥会带着搭建学习使用Dockerfile搭建MongoDB环境,敬请期待~~