Docker使用配置文件来启动部署Redis
Docker Repository 为我们提供的Redis镜像我们pull下来发现里面是没有配置文件的,要是我们想要使用自己的配置文件来启动部署,我们就需要自己手动写一个dockerfile文件来构建一个自己的Redis镜像,从而可以使用配置文件来启动,下面是DockerHub为我们提供的DockerFile。
我们从DockerHub中可以了解这种方法。
1.首先我们从Docker Repository来pull Redis镜像
docker pull redis
# 这里不指定版本默认下载latest
2.查看镜像拉取情况
docker images
# 我们看到已经成功拉取
[root@user dockerfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 7614ae9453d1 2 months ago 113MB
3.编写自己的Dockerfile文件
FROM redis
COPY redis.conf /usr/local/etc/redis.conf
CMD ["/usr/local/bin/redis-server", "/usr/local/etc/redis.conf" ]
这里这三个指令都是很基本的,这里展开说一下
FROM #指定基础镜像
COPY #本地文件拷贝到镜像中
CMD #指定容器默认执行的命令
DockerFile还有很多指令感兴趣的小伙伴可以去详细了解一下
这里我们从DockerHub提供的DockerFiiel中了解到,要构建自己的Redis镜像需要从本地拷贝redis.conf配置文件到镜像中,我们可以从官网下载到本地。给自己的DockerFile的取个名字。我这里是 mydockerfile-redis 把下载好的redis.conf文件放在一个目录下。然后开始知道构建命令。
4.Redis配置文件(基本配置)
bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问
protected-mode no #默认yes,开启保护模式,限制为本地访问
daemonize no #默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败
databases 16 #数据库个数(可选),我修改了这个只是查看是否生效。。
dir ./ #输入本地redis数据库存放文件夹(可选)
appendonly yes #redis持久化(可选)
requirepass password #配置密码
# 根据自己的需求来修改配置文件
5.构建镜像
docker build -f mydockerfile-redis -t redis-wwy:0.1 .
6.查看自己构建的镜像
docker images
#我们看到已经构建成功了!
[root@user dockerfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis-wwy 0.1 ffdb3b053298 32 months ago 141MB
redis latest 7614ae9453d1 2 months ago 113MB
7.启动容器
docker run -p 6379:6379 -v /home/redis/etc/:/usr/local/etc/redis -v /usr/local/docker/redis/data:/data --name myredis redis-wwy:0.1 /usr/local/bin/redis-server /usr/local/etc/redis.conf
docker run
-p 6379:6379 #指定端口号
-v /home/redis/etc/:/usr/local/etc/redis #挂载配置文件的目录,挂载到配置文件的上级目录,不然会报错
-v /home/redis/data:/data #挂载数据的目录
--name myredis #给容器起名字
redis-wwy:0.1 /usr/local/bin/redis-server /usr/local/etc/redis.conf #用配置文件方式启动
这里启动redis命令中的redis-server需要写绝对路径不然会报以下错误:
Fatal error, can’t open config file ‘/usr/local/etc/redis/redis.conf’: Permission
这里启动成功后直接进入日志,使用ctrl + x 退出,在docker start 容器名来启动容器,这样就成功使用配置文件来启动部署Redis了