如何使用 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,
- 導航到 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中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

退出 Docker 容器的四種方法:容器終端中使用 Ctrl D 快捷鍵容器終端中輸入 exit 命令宿主機終端中使用 docker stop <container_name> 命令宿主機終端中使用 docker kill <container_name> 命令(強制退出)

Docker 中將文件拷貝到外部主機的方法:使用 docker cp 命令:執行 docker cp [選項] <容器路徑> <主機路徑>。使用數據卷:在主機上創建目錄,在創建容器時使用 -v 參數掛載該目錄到容器內,實現文件雙向同步。

可以通過以下步驟查詢 Docker 容器名稱:列出所有容器(docker ps)。篩選容器列表(使用 grep 命令)。獲取容器名稱(位於 "NAMES" 列中)。

重啟 Docker 容器的方法:獲取容器 ID(docker ps);停止容器(docker stop <container_id>);啟動容器(docker start <container_id>);驗證重啟成功(docker ps)。其他方法:Docker Compose(docker-compose restart)或 Docker API(參考 Docker 文檔)。

在 Docker 中啟動 MySQL 的過程包含以下步驟:拉取 MySQL 鏡像創建並啟動容器,設置根用戶密碼並映射端口驗證連接創建數據庫和用戶授予對數據庫的所有權限

Docker 容器啟動步驟:拉取容器鏡像:運行 "docker pull [鏡像名稱]"。創建容器:使用 "docker create [選項] [鏡像名稱] [命令和參數]"。啟動容器:執行 "docker start [容器名稱或 ID]"。檢查容器狀態:通過 "docker ps" 驗證容器是否正在運行。

在 Docker 中創建容器: 1. 拉取鏡像: docker pull [鏡像名] 2. 創建容器: docker run [選項] [鏡像名] [命令] 3. 啟動容器: docker start [容器名]
