- 创建必要的目录用于持久化
redis的数据和配置,例如
mkdir -p /Users/Kanchil/docker-redis/data
mkdir -p /Users/Kanchil/docker-redis/conf
- 可以去GitHub上下载一份想要安装redis版本的配置文件
redis.conf
下载后复制一份到/Users/Kanchil/docker-redis/conf目录下
- 修改
redis.conf文件以满足需要,例如启用远程访问、设置密码等
# bind 127.0.0.1 # 注释掉,这是限制redis只能本地访问
protected-mode no # 默认yes,开启保护模式,限制为本地访问
daemonize no # 使用no,使用yes后台启动会和 docker run -d 的参数冲突,可能会启动失败
appendonly yes # redis持久化(可选)
requirepass 密码 # 配置redis访问密码
- 通过运行一个sh脚本,在docker中创建redis服务并启动
sh脚本如下
#!/bin/bash
appName='docker-redis'
dockerImageImage='redis'
redisData='/Users/Kanchil/docker-redis'
redisPassword='docker-redis'
mkdir -p "${redisData}"/logs
mkdir -p "${redisData}"/data
mkdir -p "${redisData}"/conf
function stop_app() {
# 停止
docker stop "${appName}"
echo "服务 ${appName} 已停止。 "
}
function rm_app() {
stop_app
sleep 1s
# 删除
docker rm -f "${appName}"
echo "服务 ${appName} 已删除。 "
}
function start_app() {
# 停止并删除
rm_app
sleep 1s
# 启动 --restart=always 自启动
# --privileged=true 选项在Docker中会赋予容器几乎与主机相同的权限。
docker run -d -p 6379:6379 --name "${appName}" \
-v "${redisData}"/logs:/logs \
-v "${redisData}"/data:/data \
-v "${redisData}"/conf/redis.conf:/usr/local/etc/redis/redis.conf \
redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes --requirepass "${REDIS_PASSWORD}"
echo '启动中,等待 5s ... '
sleep 5s
}
if [ "$1" = "stop" ]; then
stop_app
elif [ "$1" = "rm" ]; then
rm_app
elif [ "$1" = "start" ]; then
start_app
elif [ "$1" = "" ]; then
start_app
else
echo "请使用参数:start | stop | rm 运行!"
fi