Consul是一个分布式、高可用且支持多数据中心的工具,提供服务发现、配置管理和编排能力,适用于构建服务导向架构。
重要提示:自Consul 1.16起,***将停止在Dockerhub发布
consul镜像,仅发布Verified Publisher镜像。用户应从hashicorp/consul拉取镜像,而非consul。
在Docker环境中部署Consul时,通常每个主机运行一个Consul代理容器,与Docker守护进程共存。关键架构要点:
--net=host,因为Consul的共识和gossip协议对延迟和丢包敏感,其他网络模式可能引入不必要的网络层/consul/data卷),客户端节点可选择性持久化repos/consul/ directory| 环境变量 | 描述 |
|---|---|
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": "[***]", "Interval": "10s" } }'

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