
hypolas/registrator本镜像为gliderlabs/registrator的改进版本,主要解决容器多网络环境下,eth0可能未被优先识别导致IP不可达的问题。通过集成官方Docker SDK,支持按网络名称或子网优先级选择容器网络,确保服务注册(如Consul健康检查)时使用正确的IP地址。
github.com/fsouza/go-dockerclient模块,采用官方Docker SDK github.com/docker/docker适用于容器配置多个网络的环境,需指定优先使用的网络以避免服务注册时因IP选择错误导致的问题(如Consul健康检查中IP不可达)。
bashdocker pull hypolas/registrator
yamlversion: '3.8' services: registrator: image: hypolas/registrator:latest volumes: - /var/run/docker.sock:/tmp/docker.sock:ro command: -internal -cleanup -resync 10 -networks-priority "10.10.0.0/16" consul://consul:8500
Usage of /bin/registrator: /bin/registrator [options] <registry URI> -cleanup=false: 移除悬空服务 -deregister="always": 退出服务时取消注册策略,可选"always"或"on-success" -internal=false: 使用内部端口而非发布端口 -ip="": 映射到主机的端口使用的IP -resync=0: 服务重新同步的频率(秒) -retry-attempts=0: 与后端建立连接的最大重试次数,-1表示无限重试 -retry-interval=2000: 重试间隔(毫秒) -tags="": 为所有注册服务附加标签 -ttl=0: 服务TTL(默认无过期时间) -ttl-refresh=0: 服务TTL刷新频率 -networks-priority="": 容器多网络时指定优先使用的网络(-internal模式下有效),支持逗号分隔的网络名称或子网
-networks-priority=""
指定容器多网络环境下优先使用的网络,可填入网络名称或子网(逗号分隔)。若指定网络中未找到IP,则使用第一个可用IP(标准行为)。
bash-internal -cleanup -resync 10 -networks-priority "10.10.0.0/16,my_docker_network_name,10.1.1.0/24" consul://consul:8500
yamlversion: '3.8' services: test: image: sverrirab/sleep networks: - ipam50 - ipam51 - ipam52 - ipamX environment: SERVICE_NAME: test SERVICE_NETWORKS_PRIORITY: ipamX # 全局网络优先级 SERVICE_50_NETWORKS_PRIORITY: ipam50 # 针对50端口的网络优先级 SERVICE_51_NETWORKS_PRIORITY: ipam51 # 针对51端口的网络优先级 SERVICE_52_NETWORKS_PRIORITY: 10.52.0.0/16 # 针对52端口的子网优先级
!registrator
MIT
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务