
!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 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 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 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务