六、docker安装redis6.0.6最新版服务器,并进行远程连接(基于ubuntu22.04基础镜像)
1、最简单的方式,直接docker run
挂载redis的配置文件redis.conf
。redis.conf
文件存放在/home/jason/Desktop/redis/redis.conf
。
挂载redis 的持久化文件夹data
,为了数据的持久化,重启数据不会丢失。data路径为/home/jason/Desktop/redis/data
。
#拉取镜像
docker pull redis
#启动运行redis
docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name myredis -v /home/jason/Desktop/redis/redis.conf:/etc/redis/redis.conf -v /home/jason/Desktop/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass 654321
#查看启动状态
docker ps -a | grep myredis
#查看此容器30分钟之内的日志
docker logs --since 30m myredis
#进入到redis机器
docker exec -it myredis /bin/bash
#容器内部连接进行测试
docker exec -it myredis redis-cli
#查看当前redis有没有设置密码
config get requirepass
redis.conf是redis官网下载的源码安装包解压后根目录下的redis.conf文件,如果你没有的话,我把其中的项目提取出来了,放在下面供你使用。
redis.conf
# 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 654321
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
2、使用Dockerfile创建启动redis
目前ubuntu最新是22.04版本,redis官网最新是6.0.6版本,我们用这两个来构建一下redis。在编译redis源码时,需要c语言的编译环境,所以在make之前要安装好编译环境。另外我们还安装了常用的一些软件,比如vim、ssh、net-tools等。Talk is cheap,show me the code,来吧。
#指定基础镜像
FROM ubuntu
#镜像作者
MAINTAINER JingLisen "1033885715@qq.com"
#使用root用户
USER root
#设置时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
#设置阿里源
&& sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
# 安装更新系统并安装一些常用的软件
RUN apt-get update && apt-get install -y --no-install-recommends \
#安装编译环境
build-essential \
#安装vim
vim \
#安装ssh
openssh-server \
#安装net-tools
net-tools \
#安装ufw
ufw \
#安装wget
wget
#切换工作目录/usr/local,在此目录下载redis压缩包
WORKDIR /usr/local
RUN wget http://download.redis.io/releases/redis-6.0.6.tar.gz \
#解压压缩包
&& tar xzf redis-6.0.6.tar.gz \
#进入到解压之后的目录
&& cd redis-6.0.6/src \
#编译
&& make && make install
#切换到解压后的redis目录
WORKDIR /usr/local/redis-6.0.6
#myredis.conf是和Dockerfile同一级目录下的文件。把myredis.conf拷贝到当前工作目录/usr/local/redis-6.0.6
ADD myredis.conf .
#启动
ENTRYPOINT [ "/usr/local/redis-6.0.6/src/redis-server","/usr/local/redis-6.0.6/myredis.conf"]
# 开放端口
EXPOSE 6379 22
myredis.conf是redis官网下载的源码安装包解压后根目录下的redis.conf文件,但修改了以下几项。
注释掉#bind 127.0.0.1
requirepass 654321
protected-mode no
daemonize yes
appendonly yes
根据以下命令进行构建运行。
#根据Dockerfile构建myredis镜像
docker build -t myredis .
#运行myredis镜像
docker run -itd --name myredis -p 6379:6379 -v /home/jason/Desktop/redis/data:/data myredis
#查看启动状态
docker ps -a | grep myredis
#查看此容器30分钟之内的日志
docker logs --since 30m myredis
#进入到redis机器
docker exec -it myredis /bin/bash
#容器内部连接进行测试
docker exec -it myredis redis-cli
#登录,设置的密码为654321
auth 654321
#查看当前redis有没有设置密码
config get requirepass
给大家放一张编译和运行的照片吧。
3、局域网内连接
宿主机开放6379端口,我这里是ubuntu的宿主机
ufw allow 6379
打开RDM客户端,输入宿主机的ip地址、端口号、密码,即可进行连接。
4、外网连接
小米路由器设置端口转发,把宿主机的6379端口转发到公网IP的2333端口。
4.1 使用公网IP连接
公网ip可以百度IP地址,即可显示家庭宽带的公网ip。
4.2 使用域名连接
我的域名www.huerpu.cc是通过DDNS进行解析的,可以通过这个域名来访问映射到公网的机器。
这样,我们就可以把docker出的这台容器分享到互联网中,供别人使用啦。
enjoy it。
备注:可能用到的命令
#查看启动状态
docker ps -a | grep myredis
#查看此容器30分钟之内的日志
docker logs --since 30m myredis
#容器内部连接进行测试
docker exec -it myredis redis-cli
#查看当前redis有没有设置密码
config get requirepass
#如果使用centos作为基础镜像,安装YUM源
RUN yum -y update && yum -y install epel-release && yum -y install redis
# 修改requirepass
sed -i 's/^requirepass.*/requirepass yes/' /usr/local/redis-6.0.6/redis.conf
#删除掉bind 127.0.0.1
sed -i 's/bind 127.0.0.1/ /' /usr/local/redis-6.0.6/redis.conf
#把protected-mode yes改为protected-mode no
sed -i 's/protected-mode yes/protected-mode no/' /usr/local/redis-6.0.6/redis.conf
#把/daemonize no改为daemonize yes
sed -i 's/daemonize no/daemonize yes/' /usr/local/redis-6.0.6/redis.conf