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中文網其他相關文章!

Docker在Linux上重要,因為Linux是其原生平台,提供了豐富的工具和社區支持。 1.安裝Docker:使用sudoapt-getupdate和sudoapt-getinstalldocker-cedocker-ce-clicontainerd.io。 2.創建和管理容器:使用dockerrun命令,如dockerrun-d--namemynginx-p80:80nginx。 3.編寫Dockerfile:優化鏡像大小,使用多階段構建。 4.優化和調試:使用dockerlogs和dockerex

Docker是容器化工具,Kubernetes是容器編排工具。 1.Docker打包應用及其依賴成容器,可在任何支持Docker的環境中運行。 2.Kubernetes管理這些容器,實現自動化部署、擴展和管理,使應用高效運行。

Docker的目的是簡化應用部署,通過容器化技術確保應用在不同環境中一致運行。 1)Docker通過將應用和依賴打包到容器中,解決了環境差異問題。 2)使用Dockerfile創建鏡像,確保應用在任何地方一致運行。 3)Docker的工作原理基於鏡像和容器,利用Linux內核的命名空間和控制組實現隔離和資源管理。 4)基本用法包括從DockerHub拉取並運行鏡像,高級用法涉及使用DockerCompose管理多容器應用。 5)常見錯誤如鏡像構建失敗和容器無法啟動,可通過日誌和網絡配置調試。 6)性能優化建

在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" 驗證容器是否正在運行。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SublimeText3 Linux新版
SublimeText3 Linux最新版

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

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

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。