最详细的docker 安装调试 redis,并且配置映射让外部终端(当然仅限于内网)可以访问redis server。
我用的是docker的社区版本,一共有stable,edge,test,experiemtal四个版本
安装Edge版本(一个月更新一次)
sudo curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh
安装Test版本
sudo curl -fsSL test.docker.com -o test-docker.sh
开启实验功能(仅限于Edge和Test的版本)
新建并编辑文件
mkdir -p /etc/systemd/system/docker.service.d/
cd /etc/systemd/system/docker.service.d/
vi experimental.conf
内容如下:
【Service】
Environment=DOCKER_OPTS=--EXPERIMENTAL=true
然后执行systemctl daemon-reload重启daemon,接着重启docker进程即可
systemctl restart docker,最后查看docker version
然而我用的是稳定版。上面只是记录一下而已,以防自己以后忘记了。
正文开始!
目前绝大部分Linux发行版本的仓库都已经内置了docker软件包,所以可以直接从更新源更新
不熟悉可以先搜索一下包名
yum search docker

我这里直接用最新版本stable
yum install docker -y
然后启动podman进程
systemctl start podman
查看进程状态
systemctl status podman

如何查看哪些和docker相关的进程可以启动,可以进入/usr/lib/systemd/system

find命令一敲,马上就出来了

查看官方仓库上是否有关于redis的docker镜像

拉取最新版本的redis镜像
docker pull redis:latest
接着查看本地image
docker images

接着这边需要先准备一个docker的配置文件,即redis.conf,先上redis官网先下载一个,选择稳定版,不要问为什么,稳定是最重要的,软件稳定,服务器稳定,业务稳定,你才能稳定下来!

然后上传以下的redis.conf文件到docker宿主机

上传方法多种多样,有rz和sz,winscp,scp等等,自己搞定
上传完成后,修改redis.conf, 如果你对redis非常熟悉,这一部分你应该猜到的
把 bind 127.0.0.1 这项注释掉,或者直接改成 bind 0.0.0.0 ,如果默认不改,那么redis-server默认只能从服务器本地访问!
# bind 127.0.0.1
or bind 0.0.0.0
接着是保护模式,默认是yes
protected-mode yes
建议改为no,因为这是测试环境
redis通过配置文件设置密码,这个待会我会演示一下
# requirepass foobared
requirepass 123456
#用守护线程的方式启动redis
daemonize no
#redis持久化,默认是no,配置文件不改也行,待会直接在创建redis容器的时候可以加上- -appendonly yes这条命令,效果一样
appendonly yes
tcp-keepalive 300
#防止出现远程主机强迫关闭了一个现有的连接的错误 默认是300
接着创建映射目录,自己创建
我创建的是在test目录下

最终命令如下
docker run -p 6379:6379 --name redis-test-6 -v /test/redis/redis.conf:/etc/redis/redis.conf -v /test/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass "123456"
-p 6379:6379:把容器内的6379端口映射到宿主机6379端口,不一定要6379端口
--name 容器名称
-v /test/redis/redis.conf:/etc/redis/redis.conf:把宿主机配置好的redis.conf复制到容器内的这个位置中
-v /test/redis/data:/data:把redis持久化的数据在宿主机内显示,做数据备份,没备份,出事你工作就没了
-d 静默启动,同时返回容器ID
redis-server /etc/redis/redis.conf:这个是关键配置,让redis不是无配置启动,而是按照这个redis.conf的配置启动
–appendonly yes:redis启动后数据持久化
另外 -i是交互式启动,-t是返回一个交互terminal
redis配置文件没改的,可以在这条命令的最后面添加 --xxxxxxx xxxx
运行成功后,可以用docker ps查看正在运行的所有容器,容器数量过多的时候可以加管道过滤符 | grep


如果容器没启动成功,可以用docker ps -a 查看所有的容器 看看有没有创建成功,数量太多加grep筛选出来,我这边成功后可以用
docker logs redis-test-6 查看,出现如下提示即为成功
停止容器,可以用docker stop 容器ID
启动容器,docker start 容器ID
记得开启防火墙6379端口,外行运维觉得防火墙碍事,图省事直接关掉,我不建议这样做,特别是生产环境下,生产环境安全第一!
firewall-cmd --zone=public --add-ports=6379/tcp --permanent
firewall-cmd --reload

执行交互,如下所示
docker exec -it redis-test-6 /bin/bash
redis-cli

在其它主机查看



也可以下载redis desktop manager连接服务器,刚刚设置的test看到了

