我在Docker中部署了一个3主3从的redis集群。Windows主机与Docker容器的通信方式是host。 我想通过Windows主机去访问Docker环境内的容器,却发现访问不了,ping不通。
我想知道原因以及实际的解决方案。
我的docker-compose.yml文件如下所示:
version: '3'
services:
redis1:
image: redis:6.2
container_name: redis11
command: redis-server /usr/local/etc/redis/redis.conf
volumes:
- ./conf/redis1:/usr/local/etc/redis
- ./conf/redis1/hosts:/etc/hosts
- ./data/redis1:/data
network_mode: "host"
redis2:
image: redis:6.2
container_name: redis12
command: redis-server /usr/local/etc/redis/redis.conf
volumes:
- ./conf/redis2:/usr/local/etc/redis
- ./conf/redis2/hosts:/etc/hosts
- ./data/redis2:/data
network_mode: "host"
redis3:
image: redis:6.2
container_name: redis13
command: redis-server /usr/local/etc/redis/redis.conf
volumes:
- ./conf/redis3:/usr/local/etc/redis
- ./conf/redis3/hosts:/etc/hosts
- ./data/redis3:/data
network_mode: "host"
redis4:
image: redis:6.2
container_name: redis14
command: redis-server /usr/local/etc/redis/redis.conf
volumes:
- ./conf/redis4:/usr/local/etc/redis
- ./conf/redis4/hosts:/etc/hosts
- ./data/redis4:/data
network_mode: "host"
redis5:
image: redis:6.2
container_name: redis15
command: redis-server /usr/local/etc/redis/redis.conf
volumes:
- ./conf/redis5:/usr/local/etc/redis
- ./conf/redis5/hosts:/etc/hosts
- ./data/redis5:/data
network_mode: "host"
redis6:
image: redis:6.2
container_name: redis16
command: redis-server /usr/local/etc/redis/redis.conf
volumes:
- ./conf/redis6:/usr/local/etc/redis
- ./conf/redis6/hosts:/etc/hosts
- ./data/redis6:/data
network_mode: "host"
以下列举了容器redis1的配置文件,其他容器的配置文件只需要修改端口号即可。
port 8001
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
cluster-node-timeout 15000
cluster-announce-ip 192.168.6.1
cluster-announce-port 8001
cluster-announce-bus-port 18001
redis-cli --cluster create 192.168.6.1:8001 192.168.6.1:8002 192.168.6.1:8003 192.168.6.1:8004 192.168.6.1:8005 192.168.6.1:8006 --cluster-replicas 1
docker-compose.yml文件中各个redis节点的配置文件你没有区分吧;排查的时候查看一下容器启动的日志、或者节点的日志。
【相关推荐】