跳至主要內容

docker安装redis

tanmantang原创大约 3 分钟dockerredis数据库

拉取镜像

docker pull redis

查看镜像

docker images

创建本地挂载目录

为了防止数据丢失,并且持久化设置

mkdir -p /data/docker/redis/conf

创建启动脚本

cd /data/docker/redis/
vim create_redis.sh

保存以下内容

#!/bin/bash

#设置容器名
name="redis"
#在启动容器前,强制删除之前已经启动过相同容器名的容器
docker rm -f ${name}

docker run -itd -p 6379:6379 --name $name --restart=always \
 -v /data/docker/redis/conf/redis.conf:/etc/redis/redis.conf \
 -v /data/docker/redis/data:/data \
 redis redis-server /etc/redis/redis.conf --appendonly yes
 
 ## 参数说明
 # -p 6379:6379  前一个端口代表宿主机端口,后面一个代表容器内部端口
 # -v 映射文件 宿主机文件:容器文件
 # --appendonly yes  开启redis持久化

添加可执行权限

chmod +x create_redis.sh

创建redis配置文件

信息

启动前需要先创建Redis外部挂载的配置文件 ( /data/docker/redis/conf/redis.conf ) 之所以要先创建 , 是因为Redis本身容器只存在 /etc/redis 目录 , 本身就不创建 redis.conf 文件 当宿主机和容器都不存在 redis.conf 文件时, 执行启动命令的时候 docker 会将 redis.conf 作为目录创建 , 这并不是我们想要的结果

如何创建配置文件?

进入官网下载open in new window redis后,提取redis.conf文件

自行上传文件至 /data/docker/redis/conf/ 文件夹

修改配置文件

vim /data/docker/redis/conf/redis.conf
默认配置项修改为描述
appendonly noappendonly yes启动Redis持久化功能
设置为 no 表示所有数据都存储在内存中,重启redis后会丢失数据
设置为 yes表示会将数据存储在硬盘,重启后数据不会丢失
protected-mode yesprotected-mode no关闭protected-mode模式,此时外部网络可以直接访问
bind 127.0.0.1bind 0.0.0.0设置所有IP都可以访问
# requirepass foobaredrequirepass mypassword设置redis密码为mypassword 根据需求更改

构建容器

./create_redis.sh

查看信息

docker logs -f redis

如下:

1:C 15 Jun 2022 13:53:56.799 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 15 Jun 2022 13:53:56.799 # Redis version=6.2.6, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 15 Jun 2022 13:53:56.799 # Configuration loaded
1:M 15 Jun 2022 13:53:56.800 * monotonic clock: POSIX clock_gettime
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 6.2.6 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                  
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 1
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           https://redis.io       
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

1:M 15 Jun 2022 13:53:56.800 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
1:M 15 Jun 2022 13:53:56.800 # Server initialized
1:M 15 Jun 2022 13:53:56.800 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
1:M 15 Jun 2022 13:53:56.801 * Ready to accept connections

# 进入redis容器
docker exec -it redis bash

# 启动 redis-cli
redis-cli 

# 测试ping
ping 

#提示如下,表示需要先输入密码
(error) NOAUTH Authentication required.

# 输入密码
auth mypassword  # mypassword 表示你设置的redis密码
# 提示OK
OK
# 重新ping
ping

# 反馈PONG
PONG

# 继续
set name "testredis"
get name
# 然后会输出你上面存的值,则表示成功

# 退出容器需要连续输入两个exit

外部连接测试

下载redis可视化连接工具(支持windows)

https://github.com/qishibo/AnotherRedisDesktopManager/releasesopen in new window

根据提示输入连接信息

https://hub.docker.com/_/redis?tab=tags

https://redis.io/download/

http://download.redis.io/releases/