
如果你使用 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 Agent,专门为Docker生态系统设计,具有轻量级特性(基于Busybox,虚拟大小仅50MB),可通过Docker Index获取和部署。
-ui-dir标志可启用Consul Web管理界面check-http和check-cmd工具,支持容器化应用健康检查cmd:run命令自动生成生产环境部署命令通过Docker Index获取镜像:
bash$ docker pull progrium/consul
启动单节点Consul Agent(服务器模式,自动引导):
bash$ docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul -server -bootstrap
启用Web UI(访问http://localhost:8500/ui):
bash$ docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul -server -bootstrap -ui-dir /ui
交互方式:
curl localhost:8500/v1/catalog/nodesdig @0.0.0.0 -p 8600 node1.node.consulconsul members部署3节点服务器集群,测试集群动态特性:
启动第一个节点(设置期望3个节点,等待集群引导):
bash$ docker run -d --name node1 -h node1 progrium/consul -server -bootstrap-expect 3
获取第一个节点的内部IP:
bash$ JOIN_IP="$(docker inspect -f '{{.NetworkSettings.IPAddress}}' node1)"
启动第二个节点并加入集群:
bash$ docker run -d --name node2 -h node2 progrium/consul -server -join $JOIN_IP
启动第三个节点完成集群:
bash$ docker run -d --name node3 -h node3 progrium/consul -server -join $JOIN_IP
启动客户端节点(代理请求,不参与共识,暴露端口供外部访问):
bash$ docker run -d -p 8400:8400 -p 8500:8500 -p 8600:53/udp --name node4 -h node4 progrium/consul -join $JOIN_IP
在多主机私有网络中部署生产级集群,需注意:
-advertise指定私有IP/data卷用于数据持久化节点1(私有IP:10.0.1.1):
bash$ docker run -d -h node1 -v /mnt:/data \ -p 10.0.1.1:8300:8300 \ -p 10.0.1.1:8301:8301 \ -p 10.0.1.1:8301:8301/udp \ -p 10.0.1.1:8302:8302 \ -p 10.0.1.1:8302:8302/udp \ -p 10.0.1.1:8400:8400 \ -p 10.0.1.1:8500:8500 \ -p 172.17.42.1:53:53/udp \ progrium/consul -server -advertise 10.0.1.1 -bootstrap-expect 3
节点2(私有IP:10.0.1.2):
bash$ docker run -d -h node2 -v /mnt:/data \ -p 10.0.1.2:8300:8300 \ -p 10.0.1.2:8301:8301 \ -p 10.0.1.2:8301:8301/udp \ -p 10.0.1.2:8302:8302 \ -p 10.0.1.2:8302:8302/udp \ -p 10.0.1.2:8400:8400 \ -p 10.0.1.2:8500:8500 \ -p 172.17.42.1:53:53/udp \ progrium/consul -server -advertise 10.0.1.2 -join 10.0.1.1
节点3(私有IP:10.0.1.3):
bash$ docker run -d -h node3 -v /mnt:/data \ -p 10.0.1.3:8300:8300 \ -p 10.0.1.3:8301:8301 \ -p 10.0.1.3:8301:8301/udp \ -p 10.0.1.3:8302:8302 \ -p 10.0.1.3:8302:8302/udp \ -p 10.0.1.3:8400:8400 \ -p 10.0.1.3:8500:8500 \ -p 172.17.42.1:53:53/udp \ progrium/consul -server -advertise 10.0.1.3 -join 10.0.1.1
自动生成生产环境部署命令,格式:cmd:run <advertise-ip>[::<join-ip>[::client]] [docker-run-args...]
生成引导节点命令:
bash$ docker run --rm progrium/consul cmd:run 10.0.1.1 -d
生成加入节点命令:
bash$ docker run --rm progrium/consul cmd:run 10.0.1.1::10.0.1.2 -d -v /mnt:/data
生成客户端节点命令:
bash$ docker run --rm progrium/consul cmd:run 10.0.1.4::10.0.1.2::client -d
需挂载主机Docker socket:-v /var/run/docker.sock:/var/run/docker.sock
check-http
对容器内服务执行HTTP健康检查:
bashcheck-http <container-id> <port> <path> [curl-args...]
示例:check-http myapp 8080 /health --retry 3
check-cmd
在临时容器中执行命令检查:
bashcheck-cmd <container-id> <port> <command...>
示例:check-cmd mydb 5432 "pg_isready -U postgres"
将Consul DNS服务集成到Docker环境:
Ubuntu系统配置:
bash$ echo "DOCKER_OPTS='--dns 172.17.42.1 --dns 8.8.8.8 --dns-search service.consul'" >> /etc/default/docker
boot2docker (OS X)配置:
bash$ boot2docker ssh sudo "ash -c \"echo EXTRA_ARGS=\'--dns 172.17.42.1 --dns $(scutil --dns | awk -F ': ' '/nameserver/{print $2}' | head -1) --dns-search service.consul\' > /var/lib/boot2docker/profile\""
测试DNS解析:
bash$ docker run --rm aanand/docker-dnsutils dig -t SRV consul +search
推荐通过HTTP API动态配置服务和检查。如需自定义启动配置,可基于此镜像构建新镜像,添加config目录存放JSON配置文件,或通过opkg安装额外包。
快速重启使用相同IP的节点可能导致集群加入失败,这是ARP表缓存问题。解决方法:等待3分钟后重启,或手动重置缓存。
BSD
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 progrium/consul 相关的常用 Docker 镜像,适用于 不同场景 等不同场景: