V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
killy
V2EX  ›  Java

docker 容器内网络环境问题,请教各位大佬

  •  
  •   killy · 2020-02-19 00:11:20 +08:00 · 3142 次点击
    这是一个创建于 903 天前的主题,其中的信息可能已经有所发展或是发生改变。
    springboot 应用通过 docker 部署在服务器上,不能访问另外一台服务器的 reids,本地可以正常访问,redis 的密码,bind,protected-mode 都设置了,没有问题.
    就是 docker 内的网络环境问题了,但是在 docker 应用内部 ping redis 所在的 ip 依然可以通的,这是为什么? 求教各位大佬
    15 条回复    2020-02-20 14:19:02 +08:00
    killy
        1
    killy  
    OP
       2020-02-19 00:12:47 +08:00
    吃完晚饭开始搞到现在,大佬们,帮帮忙!
    stuxnet
        2
    stuxnet  
       2020-02-19 01:35:21 +08:00 via Android
    docker-compose.yml 怎么写的?
    q1angch0u
        3
    q1angch0u  
       2020-02-19 02:04:56 +08:00
    既然都在 docker 里 ping redis 了,为何不 t 一下 6379 呢?
    iamdavidzeng
        4
    iamdavidzeng  
       2020-02-19 08:48:29 +08:00
    有没有使用 host.docker.internal 去定义内部网络访问?直接用 localhost 是无效的。
    nvkou
        5
    nvkou  
       2020-02-19 09:44:38 +08:00 via Android
    感觉是你 redis 的问题。默认好像是不允许非本地连接的。也就是你 Redis 的监听地址和安全设置。
    liuzhedash
        6
    liuzhedash  
       2020-02-19 10:20:35 +08:00
    @nvkou #5 看楼主意思是本来 docker host 和 redis 就不在同一个服务器,如果 docker host 上面可以正常访问,容器内访问也应该没区别。
    killy
        7
    killy  
    OP
       2020-02-19 12:13:25 +08:00
    @stuxnet 没有用 docker-compose,用 Dockerfile,本地 maven 编译之后,服务器上运行镜像
    killy
        8
    killy  
    OP
       2020-02-19 13:33:43 +08:00
    @borui 刚试了下,在 docker 中使用 curl xxx:6379 没有任何信息,使用 curl 命令测试其他服务器的端口是可以正常访问,这是为什么?
    ChristopherWu
        9
    ChristopherWu  
       2020-02-19 13:34:28 +08:00
    两个问题:
    redis-cli 能连上去吗
    docker 容器的网络是什么,host 吗
    killy
        10
    killy  
    OP
       2020-02-19 14:33:45 +08:00
    @ChristopherWu 容器的网络是 overlay,可以在容器内先连接主机,在进入 redis
    AngryPanda
        11
    AngryPanda  
       2020-02-19 22:52:15 +08:00
    @killy #10 先连接主机,指的是 ssh 到 redis host ?如果是,那应该就是安全设置的原因了
    killy
        12
    killy  
    OP
       2020-02-20 11:24:54 +08:00
    @AngryPanda 是的,现在没用 docker,直接在服务器上跑项目,但依然是不能连接 redis
    killy
        13
    killy  
    OP
       2020-02-20 11:26:13 +08:00
    看来不是 docker 的网络问题,是项目代码问题,但是本地环境可以正常访问啊,为什么放在线上就不行了呢?
    AngryPanda
        14
    AngryPanda  
       2020-02-20 11:53:48 +08:00
    @killy 参考 5 楼同学说的,你看看你的 redis 是不是监听在本地 IP 上的。是不是不允许远程访问呢?
    lewinlan
        15
    lewinlan  
       2020-02-20 14:19:02 +08:00
    同意 5 楼。去看看 redis 监听设置是不是默认的 127.0.0.1,这样的话其他容器访问不了的。
    改成 0.0.0.0
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1156 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 19:53 · PVG 03:53 · LAX 12:53 · JFK 15:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.