Linux(CentOS)环境Docker容器中安装Redis镜像
1、下载Redis镜像
docker pull redis #如果使用docker pull redis命令,就会下载最新的redis镜像
docker pull redis:5.0.5 #下载Redis 5.0.5版本镜像
2、创建实例并启动Redis
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
docker run -p 6378:6379 --name redis \
-v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
参数解释:
mkdir -p /mydata/redis/conf #创建目录
touch /mydata/redis/conf/redis.conf #创建文件(为什么要创建这个文件呢?因为我们在把容器内部的文件挂载到主机的时候
会把他当做目录去挂载,所以提前创建好这个文件就不会挂载成目录了)
docker run -p 6378:6379 --name redis \ #把Docker中的redis的6379端口映射到主机的6378端口
(因为我主机已经安装了redis,6379端口被占用了) --name redis 是把redis容器起名叫redis
-v /mydata/redis/data:/data \ #将redis容器内部的data文件夹挂载到主机
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \ #将redis容器内部的redis.conf文件挂载到主机
-d redis redis-server /etc/redis/redis.conf #开启Redis的后台运行
实例创建成功:
[root@Silence /]# mkdir -p /mydata/redis/conf
[root@Silence /]# touch /mydata/redis/conf/redis.conf
[root@Silence /]# docker run -p 6378:6379 --name redis \
> -v /mydata/redis/data:/data \
> -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
> -d redis redis-server /etc/redis/redis.conf
32142759198fa843b8c98915d48c19acd4f1d1d4e4c179b375b5ac4432d73d3f
[root@Silence /]#
#将容器的端口映射到主机端口
docker run -p ip:hostPort:containerPort redis
查看Docker中正在运行的容器:
[root@Silence /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
81eb02763fc4 redis "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:6378->6379/tcp nostalgic_johnson
743df4fba2e9 mysql:5.7 "docker-entrypoint.s…" 3 hours ago Up 34 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
可以看到我们刚刚安装的redis已经运行起来了。
3、打开redis客户端连接redis
docker exec -it redis redis-cli
测试redis:
[root@Silence /]# docker exec -it redis redis-cli
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> set name docker
OK
127.0.0.1:6379> get name
"docker"
127.0.0.1:6379> exit
[root@Silence /]# docker restart redis
redis
[root@Silence /]# docker exec -it redis redis-cli
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379>
经过测试我们发现我们插入的数据在redis重启后就查询不到了,也就是说redis并没有做持久化操作,所以我们需要配置一下redis进行持久化操作。
vi /mydata/redis/conf/redis.conf #编辑redis.conf文件
#在文件中添加appendonly yes #打开AOF持久化模式
保存并退出
docker restart redis #重启redis
改完配置文件之后我们再来测试一下:
[root@Silence conf]# docker exec -it redis redis-cli
127.0.0.1:6379> set name docker
OK
127.0.0.1:6379> get name
"docker"
127.0.0.1:6379> exit
[root@Silence conf]# docker restart redis
redis
[root@Silence conf]# docker exec -it redis redis-cli
127.0.0.1:6379> get name
"docker"
127.0.0.1:6379>
再次重启后我们发现Redis已经有持久化操作了,redis突然崩溃也不会造成数据的丢失了。
4、使用可视化工具远程连接Redis
如果你使用的阿里云服务器那么需要在安全组中打开6379端口,详情请看《Linux(CentOS)环境Docker容器中安装Mysql镜像》这篇文章的 问题解决 部分。
我使用的是redis-desktop-manager可视化工具来远程连接的Redis
连接成功!至此,Redis就可以正常使用了。