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

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删除
Docker:简化开发和运营Docker:简化开发和运营May 13, 2025 am 12:16 AM

Docker简化开发和运维流程的方式包括:1)提供一致的环境,确保应用程序在不同环境中一致运行;2)通过Dockerfile和镜像构建优化应用程序部署;3)使用DockerCompose管理多个服务。Docker通过容器化技术实现这些功能,但使用过程中需注意镜像构建、容器启动和网络配置等常见问题,并通过镜像优化和资源管理提升性能。

Kubernetes vs. Docker:了解关系Kubernetes vs. Docker:了解关系May 12, 2025 am 12:16 AM

Docker和Kubernetes的关系是:Docker用于打包应用,Kubernetes用于编排和管理容器。1.Docker通过容器技术简化应用打包和分发。2.Kubernetes管理容器,确保高可用性和可扩展性。它们结合使用可提升应用部署和管理效率。

Docker:集装箱革命及其影响Docker:集装箱革命及其影响May 10, 2025 am 12:17 AM

Docker通过容器技术解决了软件在不同环境中运行一致性的问题。其发展历程从2013年至今,推动了云计算生态系统的演进。Docker利用Linux内核技术实现进程隔离和资源限制,提高了应用的可移植性。在开发和部署中,Docker提升了资源利用率和部署速度,支持DevOps和微服务架构,但也面临镜像管理、安全性和容器编排的挑战。

Docker vs.虚拟机:比较Docker vs.虚拟机:比较May 09, 2025 am 12:19 AM

Docker和虚拟机各有优缺点,选择应根据具体需求。1.Docker轻量、快速,适合微服务和CI/CD,启动快,资源占用少。2.虚拟机提供高隔离性和多操作系统支持,但资源消耗大,启动慢。

Docker的体系结构:了解容器和图像Docker的体系结构:了解容器和图像May 08, 2025 am 12:17 AM

Docker架构的核心概念是容器和镜像:1.镜像是容器的蓝图,包含应用及其依赖。2.容器是镜像的运行实例,基于镜像创建。3.镜像由多个只读层组成,容器运行时添加可写层。4.通过Linux命名空间和控制组实现资源隔离和管理。

Docker的力量:集装箱化解释了Docker的力量:集装箱化解释了May 07, 2025 am 12:07 AM

Docker通过容器化技术简化了应用程序的构建、部署和运行。1)Docker是一个开源平台,使用容器技术打包应用及其依赖,确保跨环境一致性。2)镜像和容器是Docker的核心,镜像为应用的可执行包,容器为镜像的运行实例。3)Docker的基本用法如运行Nginx服务器,高级用法如使用DockerCompose管理多容器应用。4)常见错误包括镜像下载失败和容器启动失败,调试技巧包括查看日志和检查端口。5)性能优化和最佳实践包括镜像优化、资源管理和安全性提升。

Kubernetes和Docker:部署和管理集装箱应用程序Kubernetes和Docker:部署和管理集装箱应用程序May 06, 2025 am 12:13 AM

使用Kubernetes和Docker部署容器化应用的步骤包括:1.构建Docker镜像,使用Dockerfile定义应用镜像并推送到DockerHub。2.在Kubernetes中创建Deployment和Service来管理和暴露应用。3.使用HorizontalPodAutoscaler实现动态扩展。4.通过kubectl命令调试常见问题。5.优化性能,定义资源限制和请求,并使用Helm管理配置。

Docker:容器化技术简介Docker:容器化技术简介May 05, 2025 am 12:11 AM

Docker是一个开源平台,用于开发、打包和运行应用程序,通过容器化技术解决应用在不同环境中的一致性问题。1.构建镜像:通过Dockerfile定义应用环境和依赖,使用dockerbuild命令构建。2.运行容器:使用dockerrun命令从镜像启动容器。3.管理容器:通过dockerps、dockerstop、dockerrm等命令管理容器生命周期。

See all articles

热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

好用且免费的代码编辑器

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

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

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用