群晖、NAS、PVE、飞牛、二手品牌机、垃圾佬

每一位热爱生活的垃圾佬都值得敬畏

六、docker安装redis6.0.6最新版服务器,并进行远程连接(基于ubuntu22.04基础镜像)

六、docker安装redis6.0.6最新版服务器,并进行远程连接(基于ubuntu22.04基础镜像) 1 […]

六、docker安装redis6.0.6最新版服务器,并进行远程连接(基于ubuntu22.04基础镜像)

1、最简单的方式,直接docker run

挂载redis的配置文件redis.confredis.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

给大家放一张编译和运行的照片吧。

docker-redis-02.png

3、局域网内连接

宿主机开放6379端口,我这里是ubuntu的宿主机

ufw allow 6379

打开RDM客户端,输入宿主机的ip地址、端口号、密码,即可进行连接。

docker-redis-01.png

4、外网连接

小米路由器设置端口转发,把宿主机的6379端口转发到公网IP的2333端口。

docker-redis-03.png

4.1 使用公网IP连接

公网ip可以百度IP地址,即可显示家庭宽带的公网ip。

docker-redis-04.png

4.2 使用域名连接

我的域名www.huerpu.cc是通过DDNS进行解析的,可以通过这个域名来访问映射到公网的机器。

docker-redis-05.png

这样,我们就可以把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 

发表回复