
Consul 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)。其他容器使用 Consul 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 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务