
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Consul是一款用于服务发现和配置的工具,具有分布式、高可用和极高可扩展性的特点。
本Docker容器已配置多项功能,便于快速运行Consul。
服务发现 - Consul使服务能够轻松注册自身,并通过DNS或HTTP接口发现其他服务。外部服务(如SaaS提供商)也可注册。
健康检查 - 健康检查功能使Consul能快速向运维人员告警集群中的问题,与服务发现集成可防止流量路由到不健康主机,并支持服务级别的熔断。
键值存储 - 灵活的键值存储可用于存储动态配置、功能标志、协调、 leader选举等。简单的HTTP API使其可在任何地方轻松使用。
多数据中心 - Consul具备数据中心感知能力,无需复杂配置即可支持任意数量的区域。
适用于微服务架构中的服务注册与发现、动态配置管理、容器化应用的服务协调、分布式系统的健康监控等场景,尤其适合需要高可用性和可扩展性的分布式环境。
bashdocker run -d -h node1 --name consul nimmis/consul server1
以上命令启动一个主机名为node1的单服务器,所有端口仅本地可访问。使用以下命令获取容器IP:
bashCONSUL_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' consul)
可通过查看日志确认启动是否成功:
bashdocker logs -f consul
日志输出示例:
==> WARNING: BootstrapExpect Mode is specified as 1; this is the same as Bootstrap mode. ==> WARNING: Bootstrap mode enabled! Do not enable unless necessary ==> Starting Consul agent... ==> Starting Consul agent RPC... ==> Consul agent running! Version: 'v0.7.2' Node name: 'ed1830c12a1d' Datacenter: 'dc' Server: true (bootstrap: true) Client Addr: 0.0.0.0 (HTTP: 8500, HTTPS: -1, DNS: 8600, RPC: 8400) Cluster Addr: 172.17.0.16 (LAN: 8301, WAN: 8302) Gossip encrypt: false, RPC-TLS: false, TLS-Incoming: false Atlas: <disabled> ==> Log data will now stream in as it occurs: 2017/01/11 18:47:08 [INFO] raft: Initial configuration (index=1): [{Suffrage:Voter ID:172.17.0.16:8300 Address:172.17.0.16:8300}] 2017/01/11 18:47:08 [INFO] raft: Node at 172.17.0.16:8300 [Follower] entering Follower state (Leader: "") 2017/01/11 18:47:08 [INFO] serf: EventMemberJoin: ed1830c12a1d 172.17.0.16 2017/01/11 18:47:08 [INFO] consul: Adding LAN server ed1830c12a1d (Addr: tcp/172.17.0.16:8300) (DC: dc) 2017/01/11 18:47:08 [INFO] serf: EventMemberJoin: ed1830c12a1d.dc 172.17.0.16 2017/01/11 18:47:08 [INFO] consul: Adding WAN server ed1830c12a1d.dc (Addr: tcp/172.17.0.16:8300) (DC: dc) 2017/01/11 18:47:15 [ERR] agent: failed to sync remote state: No cluster leader 2017/01/11 18:47:17 [WARN] raft: Heartbeat timeout from "" reached, starting election 2017/01/11 18:47:17 [INFO] raft: Node at 172.17.0.16:8300 [Candidate] entering Candidate state in term 2 2017/01/11 18:47:17 [INFO] raft: Election won. Tally: 1 2017/01/11 18:47:17 [INFO] raft: Node at 172.17.0.16:8300 [Leader] entering Leader state 2017/01/11 18:47:17 [INFO] consul: cluster leadership acquired 2017/01/11 18:47:17 [INFO] consul: New leader elected: ed1830c12a1d 2017/01/11 18:47:17 [INFO] consul: member 'ed1830c12a1d' joined, marking health alive 2017/01/11 18:47:20 [INFO] agent: Synced service 'consul'
按CTRL+C可中止日志查看。
可通过DNS获取运行Consul的服务节点的IP信息。
获取服务信息
要获取服务运行的IP和端口,查询时需指定端口8600(Consul默认DNS端口):
bashdig @$CONSUL_IP -p 8600 consul.service.consul
返回示例:
; <<>> DiG 9.10.3-P4-Ubuntu <<>> @172.17.0.16 -p 8600 consul.service.consul ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5163 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;consul.service.consul. IN A ;; ANSWER SECTION: consul.service.consul. 0 IN A 172.17.0.16 ;; Query time: 0 msec ;; SERVER: 172.17.0.16#8600(172.17.0.16) ;; WHEN: Wed Jan 11 19:47:29 CET 2017 ;; MSG SIZE rcvd: 55
使用SRV记录获取端口信息:
bashdig @$CONSUL_IP -p 8600 consul.service.consul SRV
返回示例:
; <<>> DiG 9.10.3-P4-Ubuntu <<>> @172.17.0.16 -p 8600 consul.service.consul SRV ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37039 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;consul.service.consul. IN SRV ;; ANSWER SECTION: consul.service.consul. 0 IN SRV 1 1 8300 ed1830c12a1d.node.dc.consul. ;; ADDITIONAL SECTION: ed1830c12a1d.node.dc.consul. 0 IN A 172.17.0.16 ;; Query time: 0 msec ;; SERVER: 172.17.0.16#8600(172.17.0.16) ;; WHEN: Wed Jan 11 19:56:29 CET 2017 ;; MSG SIZE rcvd: 96
可通过HTTP访问服务和节点信息,输出格式为JSON。
获取所有活动Consul节点
bashcurl -s http://$CONSUL_IP:8500/v1/catalog/nodes?pretty
返回示例:
json[ { "Node": "node1", "Address": "172.17.0.16", "TaggedAddresses": { "lan": "172.17.0.16", "wan": "172.17.0.16" }, "CreateIndex": 4, "ModifyIndex": 5 } ]
获取所有活动Consul服务
bashcurl -s http://$CONSUL_IP:8500/v1/catalog/services?pretty
返回示例:
json{ "consul": [] }
获取node1节点的健康状态
bashcurl -s http://$CONSUL_IP:8500/v1/health/node/node1?pretty
返回node1节点的健康状态:
json[ { "Node": "node1", "CheckID": "serfHealth", "Name": "Serf Health Status", "Status": "passing", "Notes": "", "Output": "Agent alive and reachable", "ServiceID": "", "ServiceName": "", "CreateIndex": 4, "ModifyIndex": 4 } ]
获取consul服务的健康状态
bashcurl -s http://$CONSUL_IP:8500/v1/health/service/consul?pretty
返回consul服务的健康状态:
json[ { "Node": { "Node": "node1", "Address": "172.17.0.16", "TaggedAddresses": { "lan": "172.17.0.16", "wan": "172.17.0.16" }, "CreateIndex": 4, "ModifyIndex": 5 }, "Service": { "ID": "consul", "Service": "consul", "Tags": [], "Address": "", "Port": 8300, "EnableTagOverride": false, "CreateIndex": 4, "ModifyIndex": 5 }, "Checks": [ { "Node": "node1", "CheckID": "serfHealth", "Name": "Serf Health Status", "Status": "passing", "Notes": "", "Output": "Agent alive and reachable", "ServiceID": "", "ServiceName": "", "CreateIndex": 4, "ModifyIndex": 4 } ] } ]
键值存储可用于保存动态配置、辅助服务协调、构建leader选举等。
使用curl写入值,例如将值yellow写入键webcluster/status:
bashcurl -s -X PUT -d 'yellow' http://$CONSUL_IP:8500/v1/kv/webcluster/status
命令返回true表示成功。
使用GET方法读取值,URL与写入时相同:
bashcurl -s -X GET http://$CONSUL_IP:8500/v1/kv/webcluster/status?pretty
返回示例:
json[ { "LockIndex": 0, "Key": "webcluster/status", "Flags": 0, "Value": "eWVsbG93", "CreateIndex": 113, "ModifyIndex": 113 } ]
Value字段显示的是base64编码值,通过base64解码可获取原始值:
bashecho "eWVsbG93" | base64 -d
输出:yellow
... 更多信息待补充 ...
如果对本镜像有任何问题或疑问,请通过https://github.com/nimmis/docker-consul/issues "GitHub issue"提交工单联系我们:
cat /etc/BUILDS/的输出欢迎贡献新功能、修复或更新(无论大小),我们始终乐于接收拉取请求,并会尽快处理。
不同版本通过TAG区分,可用版本为nimmis/consul:
| Tag | Consul版本 | 大小 |
|---|---|---|
| latest | latest/0.8.0 | |
| 0.8 | 0.8.0 | |
| 0.8.0 | 0.8.0 | |
| 0.7 | 0.7.5 | |
| 0.7.5 | 0.7.5 | |
| 0.7.3 | 0.7.3 | |
| 0.7.2 | 0.7.2 | |
| 0.7.1 | 0.7.1 | |
| 0.7.0 | 0.7.0 | |
| 0.6 | 0.6.4 | |
| 0.6.1 | 0.6.1 | [![]([***] |
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 nimmis/consul 相关的常用 Docker 镜像,适用于 不同场景 等不同场景: