插件窝 干货文章 如何使用 Docker 配置 Consul KV

如何使用 Docker 配置 Consul KV

Consul server Docker 节点 64    来源:    2025-04-02

使用 Docker 配置 Consul KV 存储

Consul 是一个服务网格解决方案,提供分布式键值存储(KV)功能。以下是使用 Docker 配置 Consul KV 存储的详细步骤。

1. 快速启动 Consul 服务

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: 允许所有客户端连接

2. 访问 Consul Web UI

打开浏览器访问: http://localhost:8500

3. 使用 CLI 操作 KV 存储

进入容器执行命令

docker exec -it consul-server consul kv put config/app/name myapp
docker exec -it consul-server consul kv get config/app/name

常用 KV 命令

# 写入键值
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

4. 使用 API 操作 KV 存储

# 写入键值
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

5. 多节点 Consul 集群配置

对于生产环境,建议配置多节点集群:

# 节点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

6. 持久化数据存储

为了持久化 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

7. 使用环境变量配置

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

8. 使用 Docker Compose

创建 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 存储功能。