Consul是一种数据中心运行时工具,主要提供服务发现、配置管理和服务编排功能,能够助力分布式系统中的服务实现自动注册与发现、动态配置更新及服务生命周期协调管理,确保数据中心内各类服务高效、可靠地通信与协作,是构建现代化微服务架构和云原生应用的重要基础设施组件。
收藏数: 1.5千
下载次数: 1052400103
类型:

library/consulConsul 1.16版本将停止发布官方Dockerhub镜像,仅提供Verified Publisher镜像。使用Docker镜像的用户需从 hashicorp/consul 拉取,而非原 consul。Verified Publisher镜像地址:[***] 快速参考
当前无支持的标签。
repos/consul/目录(含元数据、传输大小等,历史记录)library/consul标签 或 文件(历史记录)consul/目录(历史记录)Consul 是一款分布式、高可用、支持多数据中心的工具,用于服务发现、配置管理和编排。它支持大规模服务架构的快速部署、配置和维护。更多信息:
Consul 运行时包含多个组件,以下先简要介绍其架构,再说明与 Docker 的交互方式(详细架构见 Consul 架构文档)。
foo.service.consul可获取提供“foo”服务的随机主机列表,实现无代理的服务发现和负载均衡。在Docker中运行Consul时,建议每个主机运行一个Agent容器(与Docker守护进程共存),并配置部分Agent为服务器(至少3个实现基础高可用)。必须使用--net=host网络模式,因为Consul的共识和gossip协议对延迟和丢包敏感,其他网络类型可能引入不必要的性能问题。
curl(Consul 0.7+)以便健康检查。/consul/data(卷挂载,重启时建议保留以恢复状态,开发模式下不使用)。/consul/config(可挂载卷或通过CONSUL_LOCAL_CONFIG环境变量传入JSON配置)。适合本地测试,不用于生产(数据不持久化,容器停止后状态丢失)。
consoledocker run -d --name=dev-consul -e CONSUL_BIND_INTERFACE=eth0 consul
启动额外服务器并加入集群(假设第一个节点IP为172.17.0.2):
consoledocker run -d -e CONSUL_BIND_INTERFACE=eth0 consul agent -dev -join=172.17.0.2 # 第二个节点 docker run -d -e CONSUL_BIND_INTERFACE=eth0 consul agent -dev -join=172.17.0.2 # 第三个节点
consoledocker exec -t dev-consul consul members # 查看集群成员
用于转发查询和注册服务,需连接至服务器集群。
consoledocker run -d --net=host -e 'CONSUL_LOCAL_CONFIG={"leave_on_terminate": true}' \ consul agent -bind=<外部IP> -retry-join=<服务器IP>
--net=host:使用主机网络。CONSUL_LOCAL_CONFIG:设置容器终止时自动离开集群(Consul 0.7+默认启用,可省略)。-bind=<外部IP>:指定集群通信IP。-retry-join=<服务器IP>:重试连接服务器IP。consolecurl [***] # 检查服务健康状态 dig @localhost -p 8600 consul.service.consul # DNS查询服务
用于维护集群状态,需指定服务器模式和预期服务器数量。
consoledocker run -d --net=host -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' \ consul agent -server -bind=<外部IP> -retry-join=<其他服务器IP> -bootstrap-expect=<服务器总数>
-server:启用服务器模式。-bootstrap-expect=<N>:指定集群中预期的服务器数量(达到数量后启动共识)。skip_leave_on_interrupt:避免意外中断时节点退出集群(Consul 0.7+默认启用,可省略)。Consul 默认DNS端口为8600,若需使用标准端口53(需Consul 0.7+):
consoledocker run -d --net=host -e 'CONSUL_ALLOW_PRIVILEGED_PORTS=' \ consul agent -dns-port=53 -recursor=8.8.8.8 -bind=<桥接IP>
-dns-port=53:DNS端口设为53。-recursor=8.8.8.8:非Consul域名转发至外部DNS(如Google DNS)。consoledocker run -i --dns=<桥接IP> -t ubuntu sh -c "apt-get update && apt-get install -y dnsutils && dig consul.service.consul"
以下是注册容器服务到Consul的常用方法:
/consul/config挂载服务配置JSON文件(见 服务文档)。Consul 可在容器内执行健康检查,需暴露Docker守护进程并设置DOCKER_HOST环境变量(详见 健康检查文档)。
consul/目录。以下是 consul 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 版本下载页面。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务