mac系统docker默认不支持host主机网络模式

环境描述:在mac系统上安装docker及docker-compose服务,并且打算搭建一个redis集群

问题描述:mac默认不支持host网络模式,导致集群无法通过外部主机访问

具体验证步骤:

docker-compose.yml如下:

version: '3.8'

services:
  master1:
    container_name: master1
    image: redis
    volumes:
      - ./master1/conf:/usr/local/etc/redis
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
    network_mode: host

conf配置文件如下:

port 6380

# 开启集群功能
cluster-enabled yes
# 集群的配置文件名称,不需要我们创建,由redis自己维护
cluster-config-file /data/nodes.conf
# 节点心跳失败的超时时间
cluster-node-timeout 5000
# 持久化文件存放目录
dir /data
# 绑定地址
bind 0.0.0.0
# 让redis后台运行
daemonize no
# 保护模式
protected-mode no
# 数据库数量
databases 1
# 日志
logfile /data/run.log

loglevel notice

使用docker-compose up -d 启动redis容器,并查看如下

 redis-cluster-host % docker ps |grep master1
7e69b709ffae   redis     "docker-entrypoint.s…"   7 seconds ago   Up 6 seconds             master1

进入容器中,使用命令查看redis连接正常:

redis-cluster-host % docker exec -it master1 bash

root@docker-desktop:/data# redis-cli -h 127.0.0.1 -p 6380 cluster nodes
3f98bb4d73ef44b6cd9daf40b1945ffa430fe798 :6380@16380 myself,master - 0 0 0 connected

mac上使用工具连接redis测试:

使用natstat:(宿主机上也没有看到端口监听占用)

netstat -nat |grep 6380

结论及现象:mac主机无法访问host模式下的redis服务

问题定位及解决方式:

访问docker官网查看host网络描述如下:

主机网络驱动程序仅适用于 Linux 主机,但在 Docker Desktop 4.29 及更高版本上作为 Beta 功能提供。

参考链接:主机网络驱动程序| Docker 文档

 解决方式:

方式一:启动mac docker desktop的host networking

查看docker desktop的网络配置如下:

 确实host networking没有打开,而且这个模式需要sign in才能打开

方式二:使用linux docker部署

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值