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,
- 导航到 Consul UI (http://localhost:8500).
- 点击“键/值”选项卡。
- 单击“创建”创建一个新密钥。
- 输入密钥(例如 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,
- 转到到 Consul 中的“键/值”选项卡UI。
- 找到您创建的密钥并单击它以查看存储的值。
检索 KV 对是必要的步骤验证您的数据是否正确存储且可访问。
第 7 步 — 使用 Docker 持久保存数据卷
默认情况下,Docker 容器是短暂的,这意味着任何数据 如果容器被移除,存储在其中的信息将会丢失。坚持 您的 Consul KV 数据,您应该使用 Docker 卷。
- 停止并删除当前 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 文件:
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中文网其他相关文章!

在Ubuntu、CentOS和Debian上安装和使用Docker的方法各有不同。1)Ubuntu:使用apt包管理器,命令为sudoapt-getupdate&&sudoapt-getinstalldocker.io。2)CentOS:使用yum包管理器,需添加Docker仓库,命令为sudoyuminstall-yyum-utils&&sudoyum-config-manager--add-repohttps://download.docker.com/lin

在Linux上使用Docker可以提高开发效率和简化应用部署。1)拉取Ubuntu镜像:dockerpullubuntu。2)运行Ubuntu容器:dockerrun-itubuntu/bin/bash。3)创建包含nginx的Dockerfile:FROMubuntu;RUNapt-getupdate&&apt-getinstall-ynginx;EXPOSE80。4)构建镜像:dockerbuild-tmy-nginx.。5)运行容器:dockerrun-d-p8080:80

Docker在Linux上可以简化应用部署和管理。1)Docker是容器化平台,将应用及其依赖打包进轻量、可移植容器。2)在Linux上,Docker利用cgroups和namespaces实现容器隔离和资源管理。3)基本用法包括拉取镜像和运行容器,高级用法如DockerCompose可定义多容器应用。4)调试常用dockerlogs和dockerexec命令。5)性能优化可通过多阶段构建减小镜像大小,保持Dockerfile简洁是最佳实践。

Docker是一种基于Linux容器技术的工具,用于打包、分发和运行应用,提升应用的可移植性和可扩展性。1)通过dockerbuild和dockerrun命令,可以构建和运行Docker容器。2)DockerCompose用于定义和运行多容器的Docker应用,简化微服务管理。3)使用多阶段构建可以优化镜像大小,提升应用启动速度。4)查看容器日志是调试容器问题的有效方法。

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

查看 Docker 日志的方法包括:使用 docker logs 命令,例如:docker logs CONTAINER_NAME使用 docker exec 命令运行 /bin/sh 并查看日志文件,例如:docker exec -it CONTAINER_NAME /bin/sh ; cat /var/log/CONTAINER_NAME.log使用 Docker Compose 的 docker-compose logs 命令,例如:docker-compose -f docker-com

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

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


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

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

热门文章

热工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

Dreamweaver Mac版
视觉化网页开发工具

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

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

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)