精华内容
下载资源
问答
  • CentOS Docker无法访问宿主机Redis服务

    千次阅读 2020-03-21 10:01:30
    在网桥模式下,可以telnet通Redis服务,但是应用访问报错,被拒绝。 解决办法,Docker的桥接模式更改为host模式。

    在网桥模式下,可以telnet通Redis服务,但是应用访问报错,被拒绝。

    解决办法,Docker的桥接模式更改为host模式。

    展开全文
  • 主要给大家介绍了关于一次centos Docker网桥模式无法访问宿主机Redis服务的故障排除经历,文中通过示例代码介绍的非常详细,对大家学习或者使用Docker具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
  • docker redis宿主机不能访问

    千次阅读 2019-10-09 00:03:49
    title date categories ... docker redis宿主机不能访问 2018-05-31 14:38:33 +0800 docker docker redis 宿主机不能访问 按照https://redis.io/download 下载并编译re...
        
    title date categories
    docker redis宿主机不能访问
    2018-05-31 14:38:33 +0800
    docker

    docker redis 宿主机不能访问

    按照https://redis.io/download 下载并编译redis后 构建redis镜像,开放6379端口并设置密码,在容器内使用./redis-cli能够访问,在宿主机一直不能连接。同样方式开放zookeeper的2181端口并无问题。排除端口映射的问题,网上搜索根据https://blog.csdn.net/myminner/article/details/79060264 中指出了在默认的redis.conf中bind只监听127.0.0.1,在其后加入容器ip即可.之后直接使用./redis-server &启动未带配置文件参数。在宿主机访问发现提示

    (error) DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections are only accepted from the loopback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions: 1) Just disable protected mode sending the command 'CONFIG SET protected-mode no' from the loopback interface by connecting to Redis from the same host the server is running, however MAKE SURE Redis is not publicly accessible from internet if you do so. Use CONFIG REWRITE to make this change permanent. 2) Alternatively you can just disable the protected mode by editing the Redis configuration file, and setting the protected mode option to 'no', and then restarting the server. 3) If you started the server manually just for testing, restart it with the '--protected-mode no' option. 4) Setup a bind address or an authentication password. NOTE: You only need to do one of the above things in order for the server to start accepting connections from the outside.
    

    再参考bind官方说明

    # By default, if no "bind" configuration directive is specified, Redis listens
    # for connections from all the network interfaces available on the server.
    # It is possible to listen to just one or multiple selected interfaces using
    # the "bind" configuration directive, followed by one or more IP addresses.
    

    提示说明默认是启用了保护模式的,所以最后去除了redis.conf中的bind设置(宿主机做好防火墙配置),但是保留了requirepass这样宿主机即可正常通过./redis-cli链接之后,auth 密码即可

    展开全文
  • WSL子系统通过docker安装redis,解决宿主机springboot程序访问dockerredis连接失败问题 环境说明 win10 2004 WSL2+ubuntu20.04,已设置清华源+开机自启+已关闭防火墙 docker:19.03.12,且设置了阿里云镜像加速+随...

    WSL子系统通过docker安装redis,解决宿主机springboot程序访问docker中redis连接失败问题

    环境说明

    win10 2004

    WSL2+ubuntu20.04,已设置清华源+开机自启+已关闭防火墙

    docker:19.03.12,且设置了阿里云镜像加速+随WSL子系统开机自启

    redis:5.0.7

    下载镜像文件

    docker pull redis:5.0.7
    

    创建挂载目录

    创建redis配置和数据的挂载目录,便于在容器之外调整redis启动配置文件,以及支持数据持久化到容器之外。。

    mkdir -p /usr/data/redis/conf
    mkdir -p /usr/data/redis/data
    cd /usr/data/redis/conf
    vi redis.conf
    #wq保存退出
    #添加权限,可选操作,为防止因为权限问题报错可以加一下
    chmod 777 redis.conf
    

    修改redis.conf配置

    首先去官网下载最新配置,传送门

    然后在本地创建一个副本,在副本里修改一些配置

    • bind 127.0.0.1,注释掉这部分,这是限制redis只能本地访问
    • protected-mode,默认为yes,开启保护模式,限制为本地访问,需要改为no
    • appendonly,redis持久化,设置为yes,就能支持redis数据持久化到本地文件
    • requirepass,连接redis密码,设置你的你的密码即可
    • daemonize,默认为no,不需要改动,如果按某些教程改成yes以守护进程启动,会导致配置文件方式启动redis失败
    • port,容器内redis启动端口,可改可不改,后面会用到,这里先列一下

    修改完成后的配置,如下所示:

    #bind 127.0.0.1
    port 6379
    protected-mode no
    daemonize no
    appendonly yes
    requirepass 123456
    

    运行redis容器

    docker run -p 6379:6379 \
    	-d -v /usr/data/redis/conf/redis.conf:/etc/redis/redis.conf \
    	-v /usr/data/redis/data:/data \
    	--restart unless-stopped \
    	--name redis redis:5.0.7 redis-server /etc/redis/redis.conf 
    

    命令解释:

    -p 6379:6379 #宿主机与docker容器端口映射
    -d #后台启动
    -v /usr/data/redis/conf/redis.conf:/etc/redis/redis.conf #指定启动配置文件挂载
    -v /usr/data/redis/data:/data #指定持久化数据挂载目录
    --restart unless-stopped #指定redis容器重启策略,开启docker,就会自动启动redis容器,除非你自己stop容器
    --name redis #指定容器名称
    redis:5.0.7 redis-server /etc/redis/redis.conf #指定使用的镜像,指定启动redis-server,指定启动redis-server的配置文件
    #-----
    #通过docker ps,可以看到redis是否启动成功
    #上面有专门修改redis.conf配置文件,所以用Redis Desktop Manager客户端可以直接连接redis
    

    宿主机springboot集成docker容器redis

    用客户端工具连接redis很顺利,但是springboot集成redis简直一言难尽。中间甚至安装了windows版本的redis来验证springboot程序哟偶没有问题,结果是springboot程序集成windows版本的redis一次就成功,但只要一切到WSL子系统里docker容器装的redis,一直报连接失败。

    下面先讲下springboot集成redis:

    首先是pom.xml

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-pool2</artifactId>
    </dependency>
    

    需要注意的是springboot2.X连接redis用的是lettuce连接池,所以commons-pool2需要引入一下

    application.yml

    spring:
      redis:
        host: localhost
        port: 56379
        timeout: 10000
        password: 123456
        testOnBorrow: true
        testWhileIdle: true
        database: 0
        lettuce:
          pool:
            min-idle: 1
            max-idle: 5
            max-active: 10
            max-wait: -1
    

    这里需要注意的是springboot2.X,redis连接池的配置多了lettuce这一层。另外timeout不能配置为0,这里配置的10s。

    RedisUtil工具类

    @Component
    public class RedisUtil {
    	@Autowired
    	private StringRedisTemplate stringRedisTemplate;
    
    	public void setString(String key, String data) {
    		stringRedisTemplate.opsForValue().set(key, data);
    	}
    }
    

    RedisController类

    @RestController
    @RequestMapping("/redis")
    public class RedisController {
        @Autowired
        private RedisUtil redisUtil;
    
        Random random = new Random();
    
        @RequestMapping("/add")
        public String fun(){
            String key="redisDemo:testKey:";
            int i = random.nextInt(100);
            redisUtil.setString(key+i,i+"");
    
            return "ok";
        }
    }
    

    打开浏览器,访问http://localhost:8080/redis/add,一直报连接失败异常,Could not connect to Redis at localhost:6379: Connection refused。

    最开始考虑是redis服务有问题,但是用Redis Desktop Manager客户端直接访问又没有问题,而且试了调整各种参数都不行。

    后面怀疑是不是springboot集成redis有问题,就在本机装了windows版的redis,把redis地址切到本机windos版本的redis后,立马就能add数据成功了。

    最后查了很多资料,才终于把问题解决。

    解决宿主机springboot集成docker容器redis连接失败问题

    其实就改了一下docker run命令:

    docker run --net host \
    	-d -v /usr/data/redis/conf/redis.conf:/etc/redis/redis.conf \
    	-v /usr/data/redis/data:/data \
    	--restart unless-stopped \
    	--name redis redis:5.0.7 redis-server /etc/redis/redis.conf 
    

    加了–net host命令,指定容器与宿主机共用网络。

    因为容器与宿主机共用网络,所以就没必要再做端口映射了,想让哪个端口作为redis服务的端口,修改redis.conf文件即可。

    展开全文
  • docker容器中安装redis

    2019-07-31 10:54:29
    1.在宿主机中安装docker 2.执行以下命令,指定端口映射 50000:6379,并挂载在当前目录下的data目录下 docker run -d --name redis -p 50000:6379 -v ...3.宿主机访问redis,需要提前安装redis-tool,不然无法使...

    1.在宿主机中安装docker

    2.执行以下命令,指定端口映射 50000:6379,并挂载在当前目录下的data目录下

    docker run -d --name redis -p 50000:6379 -v $PWD/data:/data -d redis redis-server --appendonly yes

    3.宿主机中访问redis,需要提前安装redis-tool,不然无法使用redis-cli命令访问

    sudo apt-get update
    sudo apt-get install redis-tools
    redis-cli -h 127.0.0.1 -p 50000

    4.设置redis密码

    127.0.0.1:50000> config set requirepass 123456
    OK
    127.0.0.1:50000>

    5.再次登录则需要密码

    127.0.0.1:50000> keys *
    (error) NOAUTH Authentication required.
    127.0.0.1:50000>

    6.输入密码完成验证

    127.0.0.1:5000>auth 123456

     

    展开全文
  • 1, docker 拉去最新版本的redis docker pull redis #后面可以带上tag号, 默认拉取最新版本 2, docker安装redis container 安装之前去定义我们的redis.conf文件, 这一步很重要, redis.conf目录 $PWD/conf/redis....
  • 1、安装redis docke pull redis:5.0.8(例如) 安装完成后,我们可以使用以下命令来运行...外部可以直接通过宿主机ip:6379 访问Redis 的服务。 安装成功 接着我们通过 redis-cli 连接测试使用 redis 服务。 $ do
  • docker容器访问宿主机服务

    千次阅读 2019-10-14 20:23:07
    在使用Docker部署应用时,Docker推荐的方式是将应用及其所依赖的服务(MySQL,Redis等)均使用Docker部署,并通过link或自定义网络相连接。但是,当应用所依赖的服务被安装在宿主机上时,我们需要让容器中的应用能够...
  • 宿主机访问容器,连接ip 关闭nginx容器 Redis容器 在后台运行名为redis1的redis容器 [root@localhost ~]# docker run --name redis1 -d redis 查看运行的容器 进入redis1的操作界面 查看容器redis1...
  • 描述:在docker中部署了3个节点的cluster,使用java客户端连接,测试java客户端连接超时。 @Bean public JedisCluster JedisClusterFactory() { Set&lt;HostAndPort&gt; jedisClusterNodes = new ...
  • 最近在工作时遇到一个问题,docker容器无法访问宿主机redis,telent6379端口不通。 经排查发现,该服务器启用了防火墙,防火墙把6379的端口的访问授权给docker0网卡访问即可。 操作如下: firewall-cmd –...
  • docker容器内怎么访问宿主机的mysql和redis服务,如果访问127.0.0.1是访问容器内部的。 对于Linux可以采用如下方案 创建一个桥接网络 下面的localNet是网络名字,可自行修改;关于192.168.66.0这个子网,也可以...
  • 直接使用docker拉取redis的镜像,并且进行端口映射与文件目录共享,这样可以直接在宿主机的端口上就可以进行访问了。其实本质上也是在一个简化版的ubuntu的容器内安装好的redis-server服务。 将docker修改为163镜像...
  • 最近在工作时遇到一个问题,docker容器访问不了部署在宿主机redis服务器。telent6379端口不通。 经排查发现,该服务器启用了防火墙,防火墙把6379的端口的访问授权给docker0网卡访问即可。 操作如下: firewall-...
  • 开发的小程序使用的redis和mysql我都部署了在云主机的 2个docker容器里,然后我把docker容器的3306和6379端口和宿主机 做了mapping。 因为站点部署在宿主机的tomcat下,都是内部访问,所以我想将这2个端口对外关闭...
  • 1.宿主机中执行ifconfig, 获取当前的ip, 2.配置redis 2.1关闭redis的保护模式(即会阻挡外部网址访问), 首先打开redis的配置文件redis.conf, 然后找到protected-mode yes一行将yes改为no,当然如果你本身就是no就...
  • Docker中安装Redis

    2021-03-22 15:54:11
    Docker中安装Redis 访问 Redis 镜像库地址: https://hub.docker.com/_/redis?tab=tags 1、拉取最新版 docker pull redis:latest...说明:-p 6379:6379:映射容器服务的 6379 端口到宿主机的 6379 端口。外部可以直接通
  • docker container 访问外部宿主机服务

    千次阅读 2019-03-21 14:56:23
    docker 容器的默认网络是采用桥接的形式(和主机在同一个局域网中,但是单独使用一个独立的局域网IP),程序在生产环境中运行时,连接数据库、redis等只需要...一是将宿主机和容器看着是独立的两台机器,在配置地址的...

空空如也

空空如也

1 2 3 4 5
收藏数 90
精华内容 36
关键字:

docker访问宿主机redis

redis 订阅