首页 >运维 >Docker >如何使用 Docker 配置 Consul KV

如何使用 Docker 配置 Consul KV

Jennifer Aniston
Jennifer Aniston转载
2025-01-10 16:31:35228浏览

HashiCorp 的 Consul 是一款多功能工具,具有多种功能 在现代 DevOps 环境中。它广泛用于服务发现, 健康检查、负载平衡,特别是作为分布式键值 (KV)商店。 Consul 中的 KV 存储非常适合存储动态 配置数据、功能标志、秘密和元数据以高度的方式存储 在您的基础设施中以可用、一致的方式,这样它就可以 由分布式系统中的服务动态访问。使用 用于配置 Consul 的 KV 存储的 Docker 允许快速设置和 隔离的环境,使其成为测试和开发的理想选择。

本教程将引导您完成设置和开发的过程 使用 Docker 配置 Consul 的 KV 存储。到最后,你将拥有一个 在 Docker 中运行的功能齐全的 Consul 实例,带有 KV 对 已配置且可访问。此设置对于动态服务至关重要 分布式系统中的配置和状态管理。

第 1 步 - 拉取 Consul Docker 镜像

让我们从 Docker Hub 拉取官方 Consul 镜像。这张图片是 由 HashiCorp 维护,包含运行 Consul 所需的一切。

登录到 Ubuntu Droplet 的控制台并运行:

docker pull hashicorp/consul:latest
Outputlatest: Pulling from hashicorp/consul
c8bcd218a73d: Pull complete 
5f1ac8227c2a: Pull complete 
c51fd79d429a: Pull complete 
91eff479bde6: Pull complete 
4dfcc18e51db: Pull complete 
3e2a8bf39bf9: Pull complete 
bd9ddc54bea9: Pull complete 
2054d291fb84: Pull complete 
Digest: sha256:e244c64df77ab3586f177f1692e98575086eb40343dc82a6320f5e79543490eb
Status: Downloaded newer image for hashicorp/consul:latest
docker.io/hashicorp/consul:latest

步骤2 — 运行Consul容器

现在Consul镜像已经下载完毕,你可以启动一个新的Consul 容器。该容器将作为您的 Consul 服务器并且将 允许您与 KV 存储交互。

要启动容器,运行:

docker run -d --name=consul-server -e
OutputCONSUL_BIND_INTERFACE=eth0 -p 8500:8500 -p 8600:8600/udp hashicorp/consul
c893b6707686bce8434213975a75c936b834cf25fc84d10b407a11c4fa8ca8ba

这是此命令的作用:

  • -d 以分离模式(在后台)运行容器。
  • --name=consul-server 为容器分配名称。
  • -e CONSUL_BIND_INTERFACE=eth0 设置 Consul 应绑定到的网络接口。这是正确网络通信所必需的。
  • -p 8500:8500 将 Consul Web UI 和 API 端口映射到主机。
  • -p 8600:8600/udp 映射 DNS 服务端口服务发现。

这一步至关重要,因为它设置了您将使用的核心 Consul 服务配置KV存储。

第3步 - 验证Consul安装

为了确保Consul正确运行,您需要验证容器状态并访问Consul UI。

首先,运行 docker ps 列出所有正在运行的容器并验证 Consul 容器是否为

❯ docker ps                                                                                                      CONTAINER ID   IMAGE              COMMAND                  CREATED          STATUS          PORTS                                                                                    NAMES
c893b6707686   hashicorp/consul   "docker-entrypoint.s…"   51 seconds ago   Up 50 seconds   8300-8302/tcp, 8600/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8600->8600/udp   consul-server

现在,检查 Consul 是否可以访问,打开 Web 浏览器,然后导航到 http://localhost:8500. 您应该看到 Consul UI。

此验证步骤对于确认您的领事 在将数据存储到 KV 之前,实例运行没有任何问题 store(步骤 5)。

步骤 4 — 配置防火墙(可选)

如果您的 Consul 实例需要从外部访问(例如,从 集群中的其他节点),您必须调整防火墙设置以 允许必要端口上的流量。

例如,如果您在云实例上运行 Consul,您可以 需要允许端口 8500 (HTTP API) 和 8600 (DNS) 上的入站流量。 具体命令将根据您的防火墙解决方案(UFW、 iptables 等)。

此步骤确保您的 Consul 实例可以从其他实例访问 机器,这对于分布式配置至关重要。

第 5 步 — 存储键值对

Consul 运行后,您现在可以使用 KV 存储来存储 配置数据。您可以使用 Consul CLI 添加键值对或 Web UI。

要通过 CLI 存储键值对,运行:

docker exec -it consul-server consul kv put config/db_host 
192.168.1.100
Success! Data written to: config/db_host
docker exec -it consul-server consul kv put config/db_port 3306         Success! Data written to: config/db_port

这是此命令的作用:

  • -it - 从本地系统启动交互式终端到容器。
  • consul kv put - kv put 命令将数据写入给定路径 KV store.
  • config/db_host - 存储路径value.
  • 192.168.1.100 - Value.

使用 Web UI,

  1. 导航到 Consul UI (http://localhost:8500).
  2. 点击“键/值”选项卡。
  3. 单击“创建”创建一个新密钥。
  4. 输入密钥(例如 config/db_host)和值(例如 192.168.1.100)。

这些命令和操作存储您的服务可以动态访问的关键配置数据

第 6 步 — 检索键值对

存储了一些 KV 对后,您将需要检索它们以确保它们已正确存储。

使用 CLI,使用以下命令检索值命令:

docker exec -it consul-server consul kv get config/db_host     
192.168.1.100

使用 Web UI,

  1. 转到到 Consul 中的“键/值”选项卡UI。
  2. 找到您创建的密钥并单击它以查看存储的值。

Web GUI

检索 KV 对是必要的步骤验证您的数据是否正确存储且可访问。

第 7 步 — 使用 Docker 持久保存数据卷

默认情况下,Docker 容器是短暂的,这意味着任何数据 如果容器被移除,存储在其中的信息将会丢失。坚持 您的 Consul KV 数据,您应该使用 Docker 卷。

  1. 停止并删除当前 Consul 容器:
docker stop consul-server 
docker rm consul-server

现在,检查容器,您应该注意到 Consul 容器不再运行。

docker ps CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

2.运行新的 Consul具有 Docker 卷的容器附:

docker run -d --name=consul-server -e
OutputCONSUL_BIND_INTERFACE=eth0 -p 8500:8500 -p 8600:8600/udp -v consul_data:/consul/data hashicorp/consul
2d2a7d3ff1911c2283e70506d68391a5cbf9c935a2ae447bfb8fa21481989ef1
docker ps
OutputCONTAINER ID   IMAGE              COMMAND                  CREATED         STATUS         PORTS                                                                                    NAMES
2d2a7d3ff191   hashicorp/consul   "docker-entrypoint.s…"   5 seconds ago   Up 4 seconds   8300-8302/tcp, 8600/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8600->8600/udp   consul-server

-v consul_data:/consul/data 选项将 Docker 卷挂载到容器,确保您的 KV 存储在容器重新启动后仍然存在。

第 8 步 — 自动 Consul 启动(可选)

用于生产部署时,您可能希望自动启动 使用 Docker Compose 的 Consul 容器。 Docker Compose 简化了 多容器 Docker 应用程序并使其易于管理

创建一个包含以下内容的 docker-compose.yml 文件:

docker-compose,yml
services:
  consul:
    image: hashicorp/consul:latest    environment:
      - CONSUL_BIND_INTERFACE=eth0    volumes:
      - consul_data:/consul/data 
    ports:
      - "8500:8500"
      - "8600:8600/udp"
    restart: alwaysvolumes:
  consul_data:

然后,运行:

docker-compose up -d
Output[ ] Running 2/2
 ✔ Network work_default     Created                                                                                                           0.0s 
 ✔ Container consul-server  Started                                                                                                           0.1s
docker ps
OutputWARN[0000] /Users/anandhkumar/work/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion 
NAME            IMAGE                     COMMAND                  SERVICE   CREATED          STATUS          PORTS
work-consul-1   hashicorp/consul:latest   "docker-entrypoint.s…"   consul    40 seconds ago   Up 11 seconds   8300-8302/tcp, 8600/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8600->8600/udp

这个命令自动启动 Consul 并确保它在失败时重新启动,使其更适合生产使用。

第 9 步 - 清理

完成 Consul 实例的使用后,您应该清理你的 Docker 环境以释放资源。

让我们停止并删除 Consul容器:

docker stop consul-server   
docker rm consul-serverdocker ps
outputCONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

如果您已经完成了 Consul,您还可以删除 Docker图片:

docker rmi hashicorp/consul
outputhashicorp/consul@sha256:e244c64df77ab3586f177f1692e98575086eb40343dc82a6320f5e79543490eb
Deleted: sha256:eff8ccb509560987755a70df8d6c0b9410538d503d99498ae1ea9f48066b0439
Deleted: sha256:b5e6402bbb78eb061d538505a30300ef7f612104eaf0f11b17839a9b29bc5603
Deleted: sha256:1c61ada2ad8074615120d13bd805260d766ae8424cafbda4bded529d6a204d6f
Deleted: sha256:9b36da670e2a59f1d81c6e3c9d55906c576b384df51272977e5a9caea7131e74
Deleted: sha256:8c6e52c441c246f60ca146b71204b7d6511df75fa87a0dc0a0f91141964e8fd9
Deleted: sha256:1fce18208235de2be3c419764ec1d469229af5387447d21649c841632c653cef
Deleted: sha256:68e0a114c9c35b9aa8cac31fa32b27f886361bc85fcc63f34e882e9128f33a14
Deleted: sha256:3da5b888208a9b19694bfeaf8c74a432b50f44542d717c9e1f3ab273e505855a
Deleted: sha256:dea73e9287e6e2f3b7f9fcac4f20767d7badeefa24e52f990f1674e98abfa1a3
Deleted: sha256:201fa22d1f4c7d6e7ec43135c63b2260f303f4864f5eb43569faaa1731628799

清洁up 有助于维护整洁的开发环境,并确保 Docker 资源不会被不必要地消耗。

以上是如何使用 Docker 配置 Consul KV的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:digitalocean.com。如有侵权,请联系admin@php.cn删除