Docker中启用reids

提示:linux下安装docker可以看之前的文章或者参考其他博客

linux下安装docker


提示:网上有很多相关的博客,这里做个简单的记录

文章目录

  • Docker中启用reids
  • 步骤:
    • 1、在本地某个位置创建以下内容
    • 2、编辑配置文件vim /docker/redis/redis.conf
    • 3、编辑/docker/redis/redis.bash
    • 4、给予执行权限
    • 5、启动
    • 6. 测试
  • 总结

步骤:


提示:以下是本篇文章正文内容,下面案例可供参考

1、在本地某个位置创建以下内容

# 以/docker/redis为例mkdir -p /docker/redismkdir -p /docker/redis/datatouch /docker/redis/redis.conftouch /docker/redis/redis.bash

2、编辑配置文件vim /docker/redis/redis.conf

# Redis配置文件# Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程daemonize no# 指定Redis监听端口,默认端口为6379port 6379# 绑定的主机地址,不要绑定容器的本地127.0.0.1地址,因为这样就无法在容器外部访问bind 0.0.0.0#需要密码则打开requirepass 0122# 持久化appendonly yes

3、编辑/docker/redis/redis.bash

docker run -p 6379:6379 --name redis -v /docker/redis/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf 

解释以上命令

docker run redis # 从redis镜像运行容器-p 6379:6379 # 映射本地6379端口到容器6379端口,前为本地端口--name redis # 设置容器名称为redis,方便以后使用docker ps进行管理-v /docker/redis/redis.conf:/etc/redis/redis.conf # 关联本地/docker/redis/redis.conf文件到容器中/etc/redis/redis.conf,同样,前为本地-v /docker/redis/data:/data # 关联本地/docker/redis/data到容器内/data目录,此为存放redis数据的目录,为方便以后升级redis,而数据可以留存-d # 后台启动,使用此方式启动,则redis.conf中daemonize必须设置为no,否则会无法启动redis-server /etc/redis/redis.conf # 在容器内启动redis-server的命令,主要是为了加载配置

4、给予执行权限

记得把 密码 改为自己想要设置的密码

sudo chmod 777 /docker/redis/redis.bash

参数说明:

  • –restart=always: 当Docker 重启时,容器会自动启动。
  • –privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
  • -v /mydata/mysql/log:/var/log/mysql 映射日志文件
  • -v /opt/mysql/data/:/var/lib/mysql 映射数据目录
  • -v /mydata/mysql/my.cnf:/etc/mysql/my.cnf 映射配置文件
  • -v /mydata/mysql/conf.d:/etc/mysql/conf.d 映射配置文件
  • -e MYSQL_ROOT_PASSWORD=123456 映射mysql root用户密码
  • -d mysql 以后台方式启动

这里可能会报错,需要加入一些配置,把之前创建失败的容器删除,同时把相关目录删除


  • 创建目录
mkdir -p /mydata/mysqltouch /mydata/mysql/my.cnf
  • 在my.cnf中添加以下内容
[mysqld]user=mysqlcharacter-set-server=utf8default_authentication_plugin=mysql_native_passwordsecure_file_priv=/var/lib/mysqlexpire_logs_days=7sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTIONmax_connections=1000[client]default-character-set=utf8[mysql]default-character-set=utf8
  • 重新执行创建容器的命令就可以了

5、启动

# 查看是否已启动docker ps# 如果无法启动或者docker ps中无对应内容,将bash中命令复制出来,删除-d参数启动,查看报错信息# 使用redis-cli或者rdm访问 localhost:6379# 如需访问容器,可使用docker exec -it redis bashredis-cli

注意:

#出现以下错误则是没有输入密码导致127.0.0.1:6379> set name "hello"(error) NOAUTH Authentication required.#运行以下命令即可127.0.0.1:6379> auth 0122

6. 测试

在controller中找一个get风格的方法,添加如下代码

//连接本地的redisJedis jedis = new Jedis("192.168.125.131",6379);//如果有密码则需要下面这一行jedis.auth("0122");//查看服务是否运行,运行正常的话返回一个PONG,否则返回一个连接错误System.out.println(jedis.ping());/*****************String示例*****************///设置字符串数据jedis.set("word","helloWorld");//读取字符串数据System.out.println(jedis.get("word"));//删除数据jedis.del("word");/*****************List示例*****************/jedis.lpush("list","google");jedis.lpush("list","aLi");jedis.rpush("list","Mi");List<String> stringList = jedis.lrange("list",0l,-1l);for(String str:stringList){System.out.println(str);}/*****************Hash示例*****************/HashMap<String,String> map = new HashMap<>();map.put("name","tom");map.put("age","81");jedis.hmset("man",map);System.out.println(jedis.hmget("man","name"));System.out.println(jedis.hgetAll("man"));System.out.println("获取所有字段:"+jedis.hkeys("man"));System.out.println("获取字段数量:"+jedis.hlen("man"));System.out.println("判断age字段是否存在:"+jedis.hexists("man","age"));jedis.sadd("set1","1");jedis.sadd("set1","2");jedis.sadd("set1","1");jedis.sadd("set2","1");jedis.sadd("set2","4");System.out.println("获取集合的成员数"+jedis.scard("set1"));System.out.println("获取集合中的成员"+jedis.smembers("set2"));System.out.println("判断集合是否包含指定成员"+jedis.sismember("set1","2"));System.out.println("获取多个集合的交集"+jedis.sinter("set1","set2"));System.out.println("获取多个集合并集"+jedis.sunion("set1","set2"));System.out.println("返回第一个集合与其他集合之间的差异"+jedis.sdiff("set1","set2"));

出现以下类容说明成功!

也可以使用工具来进行测试,这里使用:RedisDesktopManager

输入linux的ip地址和设置的端口号6379以及自定义的密码后得到如下结果

到此。部署成功!

总结

提示:docker启用redis步骤大致如上文所示

下一篇:docker实现mysql 主从复制