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

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 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 版本下载页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务