
Consul Docker镜像,按照自动驾驶模式设计为自运行模式。本应用展示了对Consul Raft的配置支持,使其可用作采用自动驾驶模式的其他应用的高可用服务发现目录。
本镜像基于官方Consul镜像构建,采用自动驾驶模式设计,旨在Docker Swarm环境中实现自管理的Consul集群。通过配置Consul Raft协议,提供高可用的服务发现能力,适用于需要服务注册与发现的分布式应用场景。注意:本镜像为概念验证版本,不建议用于生产环境。
-disable-host-node-id参数,避免同一主机上容器的节点ID冲突适用于Docker Swarm模式下的服务发现概念验证,可作为分布式应用的服务注册中心。适合开发和测试环境,用于验证服务发现机制和集群扩展能力,不适合生产环境部署。
1. 环境准备
确保已安装Docker for Windows、Docker for Mac或Docker Toolbox(包含docker和docker-compose)。
2. 创建Swarm模式集群
--engine-opt experimental选项非必需,但在Docker v1.13+中可使用docker service logs consul查看集群中所有服务的日志。
bashfor i in 1 2 3; do docker-machine create -d virtualbox --engine-opt experimental swarm-$i done eval $(docker-machine env swarm-1) docker swarm init --advertise-addr $(docker-machine ip swarm-1) TOKEN=$(docker swarm join-token -q manager) for i in 2 3; do eval $(docker-machine env swarm-$i) docker swarm join --token $TOKEN --advertise-addr $(docker-machine ip swarm-$i) $(docker-machine ip swarm-1):2377 done
3. 创建Consul网络
bashdocker network create consul-net -d overlay --subnet=172.20.0.0/24
--subnet选项非必需,仅用于避免与Docker默认的10.x.x.x网段冲突。
4. 创建Swarm服务
4.1 使用docker-compose v1.10+
bashdocker deploy -c docker-compose.yml consul
4.2 手动创建服务
bashdocker service create --network=consul-net --name=consul \ -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' \ -e CONSUL_BIND_INTERFACE='eth0' \ -e CONSUL=consul \ -e CONSUL_CHECK_LEADER=true \ --replicas 3 \ --update-delay 10s \ --update-parallelism 1 \ -p 8500:8500 sdelrio/consul
本镜像基于官方consul镜像构建,支持所有官方环境变量(如CONSUL_LOCAL_CONFIG、CONSUL_BIND_INTERFACE),此外还支持以下自定义变量:
CONSUL:用于查询其他Consul节点的服务名称。镜像将通过Docker DNS查找其他节点,通常设为Swarm服务名称。
CONSUL_CHECK_LEADER:若设为true,日志将在每个健康检查间隔输出当前容器是否为领导者,以及容器IP和领导者IP:
consul_consul.3.l0e0zr114x50@swarm-1 | 2017/01/26 00:11:22 [CP] I'm leader (172.20.0.6) consul_consul.2.qwx39safki82@swarm-2 | 2017/01/26 00:11:26 [CP] Leader is 172.20.0.6, I'm 172.20.0.3
PROTO:领导者选举使用的协议,默认值为http。可设为https,此时选举地址为${PROTO}://${CONSUL}:8500/v1/status/leader。
入口点通过containerpilot执行Consul,可通过命令参数自定义配置。默认命令需3个副本:
bashagent -server -bootstrap-expect 3 -ui -client=0.0.0.0 -retry-interval 5s --log-level warn -disable-host-node-id
Consul默认根据主机名生成节点ID,在同一主机运行多个Consul容器时可能冲突。Consul(v0.8.1+)提供
-disable-host-node-id标志以避免此问题。
以下是 sdelrio/consul 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务