Consul是一个分布式、高可用且支持多数据中心的工具,提供服务发现、配置管理和编排能力,适用于构建服务导向架构。
重要提示:自Consul 1.16起,官方将停止在Dockerhub发布
consul镜像,仅发布Verified Publisher镜像。用户应从https://hub.docker.com/r/hashicorp/consul%E6%8B%89%E5%8F%96%E9%95%9C%E5%83%8F%EF%BC%8C%E8%80%8C%E9%9D%9Ehttps://hub.docker.com/_/consul%E3%80%82
在Docker环境中部署Consul时,通常每个主机运行一个Consul代理容器,与Docker守护进程共存。关键架构要点:
--net=host,因为Consul的共识和gossip协议对延迟和丢包敏感,其他网络模式可能引入不必要的网络层/consul/data卷),客户端节点可选择性持久化| 环境变量 | 描述 |
|---|---|
CONSUL_LOCAL_CONFIG | JSON格式的本地配置,如{"leave_on_terminate": true} |
CONSUL_BIND_INTERFACE | 指定绑定网络接口名称,自动获取该接口IP作为集群地址 |
CONSUL_CLIENT_INTERFACE | 指定客户端接口名称,自动获取该接口IP作为客户端地址 |
CONSUL_ALLOW_PRIVILEGED_PORTS | 允许绑定特权端口(如53),需配合-dns-port使用 |
/consul/data:Consul持久化数据目录(服务器节点必备)/consul/config:配置文件目录,容器启动时会加载该目录下的所有配置文件开发模式下Consul以服务器模式运行,数据仅存于内存,适合测试:
consoledocker run -d --name=dev-consul -e CONSUL_BIND_INTERFACE=eth0 consul
创建3节点开发集群示例:
console# 启动第一个节点 docker run -d --name=consul-1 -e CONSUL_BIND_INTERFACE=eth0 consul agent -dev -client=0.0.0.0 # 获取第一个节点IP CONSUL_1_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' consul-1) # 启动第二个节点并加入集群 docker run -d --name=consul-2 -e CONSUL_BIND_INTERFACE=eth0 consul agent -dev -client=0.0.0.0 -join=$CONSUL_1_IP # 启动第三个节点并加入集群 docker run -d --name=consul-3 -e CONSUL_BIND_INTERFACE=eth0 consul agent -dev -client=0.0.0.0 -join=$CONSUL_1_IP # 查看集群成员 docker exec -t consul-1 consul members
注意:开发模式下数据不会持久化,容器停止后数据丢失,不可用于生产环境。
客户端节点负责转发请求至服务器节点,运行在每个主机上:
consoledocker run -d \ --net=host \ -e 'CONSUL_LOCAL_CONFIG={"leave_on_terminate": true}' \ consul agent \ -bind=<主机外部IP> \ -retry-join=<服务器节点IP>
参数说明:
--net=host:使用主机网络模式leave_on_terminate:容器终止时自动离开集群-bind:指定集群通信IP(主机外部IP)-retry-join:指定服务器节点IP,支持重试连接服务器节点维护集群状态,建议部署3-5个确保高可用:
consoledocker run -d \ --net=host \ -v /path/to/consul/data:/consul/data \ -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' \ consul agent \ -server \ -bind=<主机外部IP> \ -retry-join=<其他服务器节点IP> \ -bootstrap-expect=<预期服务器节点数>
参数说明:
-server:启用服务器模式-bootstrap-expect:指定集群中预期的服务器节点数,达到该数量时自动引导集群-v /path/to/consul/data:/consul/data:持久化数据卷,服务器节点必须配置Consul默认DNS端口为8600,可配置为53端口便于使用:
consoledocker run -d \ --net=host \ -e 'CONSUL_ALLOW_PRIVILEGED_PORTS=' \ consul agent \ -dns-port=53 \ -recursor=8.8.8.8 \ -bind=<主机外部IP> \ -client=0.0.0.0
其他容器使用Consul DNS:
console# 假设Consul运行在主机IP 192.168.1.100 docker run -it --dns=192.168.1.100 ubuntu sh -c "apt-get update && apt-get install -y dnsutils && dig consul.service.consul"
通过HTTP API注册服务:
bash# 向本地Consul代理注册服务 curl -X PUT http://localhost:8500/v1/agent/service/register -d '{ "Name": "web", "ID": "web1", "Address": "192.168.1.101", "Port": 80, "Check": { "HTTP": "http://192.168.1.101/health", "Interval": "10s" } }'
以下是 arm64v8/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 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务