Windows Docker容器不通信

遇到的问题

我在Docker中部署了一个3主3从的redis集群。Windows主机与Docker容器的通信方式是host。 我想通过Windows主机去访问Docker环境内的容器,却发现访问不了,ping不通。
我想知道原因以及实际的解决方案。

docker-compose.yml

我的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"

redis容器的配置文件

以下列举了容器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节点的配置文件你没有区分吧;排查的时候查看一下容器启动的日志、或者节点的日志。

【相关推荐】




如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^