Consul 是一个服务网格解决方案,提供分布式键值存储(KV)功能。以下是使用 Docker 配置 Consul KV 存储的详细步骤。
docker run -d --name=consul-server \
-p 8500:8500 \
-p 8600:8600/udp \
consul agent -server -ui -node=server-1 -bootstrap-expect=1 -client=0.0.0.0
参数说明:
- -server
: 以服务器模式运行
- -ui
: 启用 Web UI
- -node
: 节点名称
- -bootstrap-expect=1
: 期望的服务器节点数(单节点模式)
- -client=0.0.0.0
: 允许所有客户端连接
打开浏览器访问: http://localhost:8500
docker exec -it consul-server consul kv put config/app/name myapp
docker exec -it consul-server consul kv get config/app/name
# 写入键值
consul kv put config/database/host db.example.com
# 读取键值
consul kv get config/database/host
# 列出所有键
consul kv get -recurse /
# 删除键
consul kv delete config/database/host
# 导出键值
consul kv export config/ > config.json
# 导入键值
consul kv import @config.json
# 写入键值
curl -X PUT --data "myvalue" http://localhost:8500/v1/kv/config/app/key
# 读取键值
curl http://localhost:8500/v1/kv/config/app/key?raw
# 列出所有键
curl http://localhost:8500/v1/kv/config/?recurse
对于生产环境,建议配置多节点集群:
# 节点1
docker run -d --name=consul-server-1 \
consul agent -server -ui -node=server-1 -bootstrap-expect=3 -client=0.0.0.0
# 获取节点1 IP
SERVER1_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' consul-server-1)
# 节点2
docker run -d --name=consul-server-2 \
consul agent -server -ui -node=server-2 -client=0.0.0.0 -join=$SERVER1_IP
# 节点3
docker run -d --name=consul-server-3 \
consul agent -server -ui -node=server-3 -client=0.0.0.0 -join=$SERVER1_IP
为了持久化 KV 数据,可以挂载数据卷:
docker run -d --name=consul-server \
-v consul-data:/consul/data \
-p 8500:8500 \
consul agent -server -ui -node=server-1 -bootstrap-expect=1 -client=0.0.0.0
docker run -d --name=consul-server \
-e 'CONSUL_LOCAL_CONFIG={"datacenter":"dc1","server":true}' \
-p 8500:8500 \
consul agent -server -ui -bootstrap-expect=1 -client=0.0.0.0
创建 docker-compose.yml
文件:
version: '3'
services:
consul-server:
image: consul
command: "agent -server -ui -node=server-1 -bootstrap-expect=1 -client=0.0.0.0"
ports:
- "8500:8500"
- "8600:8600/udp"
volumes:
- consul-data:/consul/data
volumes:
consul-data:
然后运行:
docker-compose up -d
通过以上方法,您可以轻松地在 Docker 环境中配置和使用 Consul 的 KV 存储功能。