我有以下
docker-compose.yml
redis 配置。
version: '3.5'
services:
db:
image: redis:latest
command: redis-server --bind 0.0.0.0 --appendonly yes --protected-mode no
ports:
- target: 6379
published: 6379
protocol: tcp
mode: ingress
有两个主机
leader-0
(经理)和redis-0
(工人)
> root@leader-0:~# docker node ls
ID HOSTNAME STATUS
46tmallxr4l8xr7i90vlwntjq * leader-0 Ready
mofbedj4sqlxgnyatbxhlokc7 redis-0 Ready
Redis 主机
redis-0
按预期在本地主机上公开 6379 端口:
> root@redis-0:~# redis-cli -h 127.0.0.1 ping
PONG
但是 6379 在管理器上不可用(尽管应该):
> root@leader-0:~# redis-cli -h 127.0.0.1 ping
Could not connect to Redis at 127.0.0.1:6379: Connection timed out
有趣的部分是:
Connection timed out
(不拒绝)。redis-cli -h 127.0.0.1 ping
在其他工作主机上按预期工作(返回PONG
)。Docker 覆盖混搭网络应该在每台主机的本地接口上公开 6379 端口,但看起来出了问题,我搞砸了到底是什么。
管理主机上的其他服务工作正常(我可以
curl http://localhost:${SERVICE_PORT}/
)。
管理器主机与工作器主机具有相同的防火墙规则(+打开了其他端口)
遇到同样的问题,你找到解决办法了吗?