docker安装redis
原创大约 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 作为目录创建 , 这并不是我们想要的结果
修改配置文件
vim /data/docker/redis/conf/redis.conf
默认配置项 | 修改为 | 描述 |
---|---|---|
appendonly no | appendonly yes | 启动Redis持久化功能 设置为 no 表示所有数据都存储在内存中,重启redis后会丢失数据设置为 yes 表示会将数据存储在硬盘,重启后数据不会丢失 |
protected-mode yes | protected-mode no | 关闭protected-mode模式,此时外部网络可以直接访问 |
bind 127.0.0.1 | bind 0.0.0.0 | 设置所有IP都可以访问 |
# requirepass foobared | requirepass 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/releases
根据提示输入连接信息
相关连接{#redislink}
https://hub.docker.com/_/redis?tab=tags
https://redis.io/download/
http://download.redis.io/releases/