docker 构建redis
一、Docker搜索redis镜像
docker search redis
二、Docker拉取镜像
docker pull redis
三、Docker挂载配置文件
接下来就是要将redis 的配置文件进行挂载,以配置文件方式启动redis 容器。(挂载:即将宿主的文件和容器内部目录相关联,相互绑定,在宿主机内修改文件的话也随之修改容器内部文件)
1)、挂载redis的配置文件
2)、挂载redis 的持久化文件(为了数据的持久化)。
本人的配置文件是放在
liunx 下redis.conf文件位置: /app/redis/redis.conf
liunx 下redis的data文件位置 : /app/redis/
配置文件
# bind 192.168.1.100 10.0.0.1 # bind 127.0.0.1 ::1 #bind 127.0.0.1 protected-mode no port 6379 tcp-backlog 511 requirepass 000415 timeout 0 tcp-keepalive 300 daemonize no supervised no pidfile /var/run/redis_6379.pid loglevel notice logfile "" databases 30 always-show-logo yes save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename dump.rdb dir ./ replica-serve-stale-data yes replica-read-only yes repl-diskless-sync no repl-disable-tcp-nodelay no replica-priority 100 lazyfree-lazy-eviction no lazyfree-lazy-expire no lazyfree-lazy-server-del no replica-lazy-flush no appendonly yes appendfilename "appendonly.aof" no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb aof-load-truncated yes aof-use-rdb-preamble yes lua-time-limit 5000 slowlog-max-len 128 notify-keyspace-events "" hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-size -2 list-compress-depth 0 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 hll-sparse-max-bytes 3000 stream-node-max-bytes 4096 stream-node-max-entries 100 activerehashing yes hz 10 dynamic-hz yes aof-rewrite-incremental-fsync yes rdb-save-incremental-fsync yes
四、启动redis 容器
docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name redis -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data -v /etc/localtime:/etc/localtime:ro
-d redis redis-server /etc/redis/redis.c
onf --appendonly yes --requirepass 000415
1)-restart=always 总是开机启动
2)-p 6379:6379 将6379端口挂载出去
3)–name 给这个容器取一个名字
4)-v 数据卷挂载 /app/redis/redis.conf:/etc/redis/redis.conf /////此处是将宿主机 /app/redis/redis.conf 文件映射到 redis 容器下的 /etc/redis/redis.conf,此处你也可以理解为docker容器和宿主机共享这个文件。
5)-d redis 后台运行容器,不加-d就是直接在控制台输出,关闭窗口即停止容器。
6) redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的 redis.conf文件,最终找到的是挂载的目录 /etc/redis/redis.conf 也就是宿主机下共享的 /app/redis/redis.conf。
补充:如果有权限相关的问题,可以给容器一个特权模式。加一个 --privileged
7) –appendonly yes 开启redis 持久化
8)--log-opt max-size=100m --log-opt max-file ////max-size:指定日志文件大小上限 //// max-file:指定日志文件个数
9) –requirepass 000415 设置密码 (如果你是通过docker 容器内部连接的话,就随意,可设可不设。但是如果想向外开放的话,一定要设置,我被搞过,可以看这篇文章“阿里云服务器中毒‘Kirito666’经历”)
10) -v /etc/localtime:/etc/localtime:ro
这个命令的作用是将宿主机上的时区设置文件(/etc/localtime
)挂载到Docker容器中相同的位置,使容器能够使用与宿主机相同的时区设置。
具体来说,这个命令的各部分意义如下:
-v
:这是Docker命令用来指定挂载卷的标志(Volume)。/etc/localtime
:这是宿主机上时区文件的路径。该文件包含了当前时区的信息。:/etc/localtime
:这是容器内部的挂载点,即容器内与宿主机/etc/localtime
文件对应的路径。:ro
:这表示以只读方式挂载(Read-Only)。容器可以读取该文件,但无法修改它,这样可以防止容器的操作影响宿主机的时区设置。
这样做的好处是保证容器内的应用程序可以正确处理与时区相关的操作,例如记录日志的时间戳、执行定时任务等。这对于需要时区一致性的应用程序来说非常重要。例如,如果你在上海运行宿主机,而你的容器也应当使用东京的时区,通过这种方式挂载/etc/localtime
,你的容器将会自动采用上海的时区,而无需在容器内单独配置时区。
五、测试
1、通过docker ps指令查看启动状态
docker ps |grep redis 通过docker ps指令查看启动状态,是否成功.
2、查看容器运行日志
命令:docker logs --since 30m <容器名>
3、容器内部连接进行测试
ocker exec -it redis redis-cli
查看当前redis有没有设置密码:(得验证通过了才能输入的)
config get requirepass
查看当前redis有没有设置密码:(得验证通过了才能输入的)
config get requirepass