自学内容网 自学内容网

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部署


原文地址:https://blog.csdn.net/u011089760/article/details/140078578

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!