小沙弥爱吃肉 2023-09-07 12:45 采纳率: 33.3%
浏览 10

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
  • 写回答

2条回答 默认 最新

  • DaenCode 后端领域新星创作者 2023-09-07 14:07
    关注

    docker-compose.yml文件中各个redis节点的配置文件你没有区分吧;排查的时候查看一下容器启动的日志、或者节点的日志。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月7日

悬赏问题

  • ¥15 qtcp 发送数据时偶尔会遇到发送数据失败?用的MSVC编译器(标签-qt|关键词-tcp)
  • ¥15 cam_lidar_calibration报错
  • ¥15 拓扑学,凸集,紧集。。
  • ¥15 如何扩大AIS数据容量
  • ¥15 单纯型python实现编译报错
  • ¥15 c++2013读写oracle
  • ¥15 c++ gmssl sm2验签demo
  • ¥15 关于模的完全剩余系(关键词-数学方法)
  • ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因