首頁 >運維 >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刪除