HashiCorp 的 Consul 是一款多功能工具,具有多種功能 在現代 DevOps 環境中。它廣泛用於服務發現, 健康檢查、負載平衡,特別是作為分布式鍵值 (KV)商店。 Consul 中的 KV 存儲非常適合存儲動態 配置數據、功能標誌、秘密和元數據以高度的方式存儲 在您的基礎設施中以可用、一致的方式,這樣它就可以 由分布式係統中的服務動態訪問。使用 用於配置 Consul 的 KV 存儲的 Docker 允許快速設置和 隔離的環境,使其成為測試和開發的理想選擇。
本教程將引導您完成設置和開發的過程 使用 Docker 配置 Consul 的 KV 存儲。到最後,你將擁有一個 在 Docker 中運行的功能齊全的 Consul 實例,帶有 KV 對 已配置且可訪問。此設置對於動態服務至關重要 分布式係統中的配置和狀態管理。
讓我們從 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
現在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
這是此命令的作用:
這一步至關重要,因為它設置了您將使用的核心 Consul 服務配置KV存儲。
為了確保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)。
如果您的 Consul 實例需要從外部訪問(例如,從 集群中的其他節點),您必須調整防火牆設置以 允許必要端口上的流量。
例如,如果您在雲實例上運行 Consul,您可以 需要允許端口 8500 (HTTP API) 和 8600 (DNS) 上的入站流量。 具體命令將根據您的防火牆解決方案(UFW、 iptables 等)。
此步驟確保您的 Consul 實例可以從其他實例訪問 機器,這對於分布式配置至關重要。
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
這是此命令的作用:
使用 Web UI,
這些命令和操作存儲您的服務可以動態訪問的關鍵配置數據
存儲了一些 KV 對後,您將需要檢索它們以確保它們已正確存儲。
使用 CLI,使用以下命令檢索值命令:
docker exec -it consul-server consul kv get config/db_host 192.168.1.100
使用 Web UI,
檢索 KV 對是必要的步驟驗證您的數據是否正確存儲且可訪問。
默認情況下,Docker 容器是短暫的,這意味著任何數據 如果容器被移除,存儲在其中的信息將會丟失。堅持 您的 Consul KV 數據,您應該使用 Docker 卷。
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 存儲在容器重新啟動後仍然存在。
用於生產部署時,您可能希望自動啟動 使用 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 並確保它在失敗時重新啟動,使其更適合生產使用。
完成 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中文網其他相關文章!