
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
!Docker Stars !Docker Pulls https://github.com/dj-wasabi/consul/workflows/CI/badge.svg](https://github.com/dj-wasabi/consul/actions?query=workflow%3ACI)
这是一个在Alpine上运行Consul的Docker容器。该容器体积小巧,大小仅75MB多一点。
此Docker容器中的版本:
Consul应用程序安装在容器的/bin目录中,启动脚本也位于此目录。Consul的数据存储在/consul目录中:
/consul/config config.json文件的位置。这也是一个卷,可以挂载到主机上。
/consul/data Consul存储所有数据的位置。这也是一个卷,可以挂载到主机上。
Consul以consul用户身份运行。通过配置以下功能,Consul可以作为非root用户运行:
--cap-add IPC_LOCK)此容器中使用的UID是1050。因此,当使用主机挂载时,确保该ID在运行容器的主机上可用。
容器中还安装了Python。Python用于测试容器,通过testinfra工具进行。您可以在tests目录中看到一个名为test_consul.py的文件,该文件将被执行。
只需运行以下命令下载容器:
bashdocker pull wdijkerman/consul
有多种使用此容器的方式。
此示例将启动一个单节点Consul服务器,不包含任何代理。
需要将以下json文件存储在某个位置:
json{ "data_dir": "/consul/data", "log_level": "INFO", "client_addr": "0.0.0.0", "ports": { "dns": 53 }, "ui": true, "server": true, "bootstrap_expect": 1, "disable_update_check": true }
然后可以使用以下命令启动单节点集群:
bashdocker run -p 8400:8400 -p 8500:8500 \ -p 8600:53/udp -h server1 \ -v path/to/file.json:/consul/config/my_config.json:ro \ wdijkerman/consul
根据Hashicorp的Consul官方文档,最佳(或最优)集群大小为3或5个节点。集群中的第一个节点与其他节点的启动方式不同。第一个节点的启动方式如下:
bashdocker run -p 8300-8302:8300-8302 \ -p 8301-8302:8301-8302/udp \ -p 8400:8400 -p 8500:8500 \ -p 8600:53 -p 8600:53/udp \ -v /data/consul/cluster:/consul/data \ -v /data/consul/config:/consul/config \ -h server1 wdijkerman/consul
如您所见,我们使用-bootstrap-expect 3选项启动Consul集群。我们让Consul集群知道服务器节点的大小将是3个。使用多少个代理节点并不重要。我们将本地目录'/data/consul/cluster'挂载到容器中,因此当容器重新启动时,Consul数据不会丢失。(确保目录的UID设置为995)
其余节点使用-join命令启动。我们首先需要第一个Consul服务器的IP。
bashdocker run -p 8300-8302:8300-8302 \ -p 8301-8302:8301-8302/udp \ -p 8400:8400 -p 8500:8500 \ -p 8600:53 -p 8600:53/udp \ -v /data/consul/cluster:/consul/data \ -v /data/consul/config:/consul/config \ -h server[2-5] wdijkerman/consul
其余服务器将最初连接到第一个启动的服务器并加入集群。
当我们有Consul集群时,可以向集群添加代理。它们将处理来自其他Docker服务的请求
bashdocker run -p 8301-8302:8301-8302 \ -p 8301-8302:8301-8302/udp \ -p 8400:8400 -p 8500:8500 \ -p 8600:53 -p 8600:53/udp \ -h agent[1-??] wdijkerman/consul
根目录中存在一个docker-compose.yml文件,可用于启动基本的单节点Consul服务器。
bashdocker-compose -f docker-compose.yml up consul
有许多配置Consul的选项。有关所有选项,请参见此页面:[***]
您可以使用以下环境变量配置Consul:
CONSUL_INTERFACE_ADVERTISE: 当配置了网络接口时,它将使用该接口的IP作为广告地址。CONSUL_INTERFACE_BIND: 当配置了网络接口时,它将使用该接口的IP作为绑定地址。CONSUL_INTERFACE_CLIENT: 当配置了网络接口时,它将使用该接口的IP作为客户端地址。示例:
bash-e CONSUL_INTERFACE_BIND=eth0
您可以在命令行中添加选项,参见以下示例:
bashdocker run -p 8301-8302:8301-8302 \ -p 8301-8302:8301-8302/udp \ -p 8400:8400 -p 8500:8500 \ -p 8600:53 -p 8600:53/udp \ -h agent[1-??] wdijkerman/consul
在上面的配置中,我们添加了-advertise配置选项。
您还可以添加json配置文件。将json文件放在/data/consul/config目录中(或使用您用于存储配置的目录)。
cat /data/consul/config/datacenter.json { "datacenter": "nwg" }
当Consul重新启动时,您将看到数据中心设置为"nwg"。
==> Starting Consul agent... ==> Starting Consul agent RPC... ==> Consul agent running! Version: 'v0.7.2' Node name: 'server1' Datacenter: 'nwg' Server: true (bootstrap: true) Client Addr: 0.0.0.0 (HTTP: 8500, HTTPS: -1, DNS: 53, RPC: 8400) Cluster Addr: 172.17.0.2 (LAN: 8301, WAN: 8302) Gossip encrypt: false, RPC-TLS: false, TLS-Incoming: false Atlas: <disabled>
Consul需要最多5个不同的端口才能正常工作,有些使用TCP、UDP或两种协议。下面我们记录每个端口的要求。
设置安全的Consul集群 配置访问控制列表
MIT许可证(MIT)
参见文件:License
请在https://github.com/dj-wasabi/consul/issues%E6%8A%A5%E5%91%8A%E9%97%AE%E9%A2%98
欢迎提交Pull Requests!
以下是 wdijkerman/consul 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

来自真实用户的反馈,见证轩辕镜像的优质服务