目錄
第 1 步 - 拉取 Consul Docker 鏡像
步驟2 — 運行Consul容器
第3步 - 驗證Consul安裝
步驟 4 — 配置防火牆(可選)
第 5 步 — 存儲鍵值對
第 6 步 — 檢索鍵值對
第 7 步 — 使用 Docker 持久保存數據卷
第 8 步 — 自動 Consul 啟動(可選)
第 9 步 - 清理
首頁 運維 Docker 如何使用 Docker 配置 Consul KV

如何使用 Docker 配置 Consul KV

Jan 10, 2025 pm 04:31 PM
docker

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

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1653
14
CakePHP 教程
1413
52
Laravel 教程
1304
25
PHP教程
1251
29
C# 教程
1224
24
docker怎麼退出容器 docker怎麼退出容器 Apr 15, 2025 pm 12:15 PM

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

docker內的文件怎麼拷貝到外面 docker內的文件怎麼拷貝到外面 Apr 15, 2025 pm 12:12 PM

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

docker容器名稱怎麼查 docker容器名稱怎麼查 Apr 15, 2025 pm 12:21 PM

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

docker怎麼重啟 docker怎麼重啟 Apr 15, 2025 pm 12:06 PM

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

docker怎麼啟動mysql docker怎麼啟動mysql Apr 15, 2025 pm 12:09 PM

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

docker怎麼啟動容器 docker怎麼啟動容器 Apr 15, 2025 pm 12:27 PM

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

docker怎麼更新鏡像 docker怎麼更新鏡像 Apr 15, 2025 pm 12:03 PM

更新 Docker 鏡像的步驟如下:拉取最新鏡像標記新鏡像為特定標籤刪除舊鏡像(可選)重新啟動容器(如果需要)

docker怎麼創建容器 docker怎麼創建容器 Apr 15, 2025 pm 12:18 PM

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

See all articles