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

如何使用 Docker 配置 Consul KV

Jan 10, 2025 pm 04:31 PM
docker

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中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

docker怎么退出容器 docker怎么退出容器 Apr 15, 2025 pm 12:15 PM

退出 Docker 容器的四种方法:容器终端中使用 Ctrl D 快捷键容器终端中输入 exit 命令宿主机终端中使用 docker stop <container_name> 命令宿主机终端中使用 docker kill <container_name> 命令(强制退出)

docker内的文件怎么拷贝到外面 docker内的文件怎么拷贝到外面 Apr 15, 2025 pm 12:12 PM

Docker 中将文件拷贝到外部主机的方法:使用 docker cp 命令:执行 docker cp [选项] <容器路径> <主机路径>。使用数据卷:在主机上创建目录,在创建容器时使用 -v 参数挂载该目录到容器内,实现文件双向同步。

docker怎么重启 docker怎么重启 Apr 15, 2025 pm 12:06 PM

重启 Docker 容器的方法:获取容器 ID(docker ps);停止容器(docker stop <container_id>);启动容器(docker start <container_id>);验证重启成功(docker ps)。其他方法:Docker Compose(docker-compose restart)或 Docker API(参考 Docker 文档)。

docker容器名称怎么查 docker容器名称怎么查 Apr 15, 2025 pm 12:21 PM

可以通过以下步骤查询 Docker 容器名称:列出所有容器(docker ps)。筛选容器列表(使用 grep 命令)。获取容器名称(位于 "NAMES" 列中)。

docker怎么启动mysql docker怎么启动mysql Apr 15, 2025 pm 12:09 PM

在 Docker 中启动 MySQL 的过程包含以下步骤:拉取 MySQL 镜像创建并启动容器,设置根用户密码并映射端口验证连接创建数据库和用户授予对数据库的所有权限

docker怎么启动容器 docker怎么启动容器 Apr 15, 2025 pm 12:27 PM

Docker 容器启动步骤:拉取容器镜像:运行 "docker pull [镜像名称]"。创建容器:使用 "docker create [选项] [镜像名称] [命令和参数]"。启动容器:执行 "docker start [容器名称或 ID]"。检查容器状态:通过 "docker ps" 验证容器是否正在运行。

docker怎么更新镜像 docker怎么更新镜像 Apr 15, 2025 pm 12:03 PM

更新 Docker 镜像的步骤如下:拉取最新镜像标记新镜像为特定标签删除旧镜像(可选)重新启动容器(如果需要)

docker怎么创建容器 docker怎么创建容器 Apr 15, 2025 pm 12:18 PM

在 Docker 中创建容器: 1. 拉取镜像: docker pull [镜像名] 2. 创建容器: docker run [选项] [镜像名] [命令] 3. 启动容器: docker start [容器名]

See all articles