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

2020-02-19 00:11:20 +08:00
 killy
springboot 应用通过 docker 部署在服务器上,不能访问另外一台服务器的 reids,本地可以正常访问,redis 的密码,bind,protected-mode 都设置了,没有问题.
就是 docker 内的网络环境问题了,但是在 docker 应用内部 ping redis 所在的 ip 依然可以通的,这是为什么? 求教各位大佬
3912 次点击
所在节点    Java
15 条回复
killy
2020-02-19 00:12:47 +08:00
吃完晚饭开始搞到现在,大佬们,帮帮忙!
stuxnet
2020-02-19 01:35:21 +08:00
docker-compose.yml 怎么写的?
q1angch0u
2020-02-19 02:04:56 +08:00
既然都在 docker 里 ping redis 了,为何不 t 一下 6379 呢?
iamdavidzeng
2020-02-19 08:48:29 +08:00
有没有使用 host.docker.internal 去定义内部网络访问?直接用 localhost 是无效的。
nvkou
2020-02-19 09:44:38 +08:00
感觉是你 redis 的问题。默认好像是不允许非本地连接的。也就是你 Redis 的监听地址和安全设置。
liuzhedash
2020-02-19 10:20:35 +08:00
@nvkou #5 看楼主意思是本来 docker host 和 redis 就不在同一个服务器,如果 docker host 上面可以正常访问,容器内访问也应该没区别。
killy
2020-02-19 12:13:25 +08:00
@stuxnet 没有用 docker-compose,用 Dockerfile,本地 maven 编译之后,服务器上运行镜像
killy
2020-02-19 13:33:43 +08:00
@borui 刚试了下,在 docker 中使用 curl xxx:6379 没有任何信息,使用 curl 命令测试其他服务器的端口是可以正常访问,这是为什么?
ChristopherWu
2020-02-19 13:34:28 +08:00
两个问题:
redis-cli 能连上去吗
docker 容器的网络是什么,host 吗
killy
2020-02-19 14:33:45 +08:00
@ChristopherWu 容器的网络是 overlay,可以在容器内先连接主机,在进入 redis
AngryPanda
2020-02-19 22:52:15 +08:00
@killy #10 先连接主机,指的是 ssh 到 redis host ?如果是,那应该就是安全设置的原因了
killy
2020-02-20 11:24:54 +08:00
@AngryPanda 是的,现在没用 docker,直接在服务器上跑项目,但依然是不能连接 redis
killy
2020-02-20 11:26:13 +08:00
看来不是 docker 的网络问题,是项目代码问题,但是本地环境可以正常访问啊,为什么放在线上就不行了呢?
AngryPanda
2020-02-20 11:53:48 +08:00
@killy 参考 5 楼同学说的,你看看你的 redis 是不是监听在本地 IP 上的。是不是不允许远程访问呢?
lewinlan
2020-02-20 14:19:02 +08:00
同意 5 楼。去看看 redis 监听设置是不是默认的 127.0.0.1,这样的话其他容器访问不了的。
改成 0.0.0.0

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/645688

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX