本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
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以服务器模式运行,数据仅存于内存,适合测试:
docker run -d --name=dev-consul -e CONSUL_BIND_INTERFACE=eth0 consul
创建3节点开发集群示例:
# 启动第一个节点 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
注意:开发模式下数据不会持久化,容器停止后数据丢失,不可用于生产环境。
客户端节点负责转发请求至服务器节点,运行在每个主机上:
docker 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个确保高可用:
docker 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端口便于使用:
docker 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:
# 假设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注册服务:
# 向本地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 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429