docker部署etcd實(shí)踐過程
更新時(shí)間:2025年12月05日 14:14:27 作者:野豬佩擠
文章介紹了如何創(chuàng)建網(wǎng)絡(luò)、啟動Etcd服務(wù)器實(shí)例并將其附加到app-tier網(wǎng)絡(luò),以及如何啟動Etcd客戶端實(shí)例進(jìn)行查詢
第 1 步:創(chuàng)建網(wǎng)絡(luò)
docker network create app-tier --driver bridge
第 2 步:啟動 Etcd 服務(wù)器實(shí)例
使用命令的–network app-tier參數(shù)docker run將 Etcd 容器附加到app-tier網(wǎng)絡(luò)
docker run -d --name Etcd-server \
--network app-tier \
--publish 2379:2379 \
--publish 2380:2380 \
--env ALLOW_NONE_AUTHENTICATION=yes \
--env ETCD_ADVERTISE_CLIENT_URLS=http://etcd-server:2379 \
bitnami/etcd:latest
第 3 步:啟動您的 Etcd 客戶端實(shí)例
docker run -it --rm \
--network app-tier \
--env ALLOW_NONE_AUTHENTICATION=yes \
bitnami/etcd:latest etcdctl --endpoints http://etcd-server:2379 put /message Hello

docker run -it --rm --network app-tier --env ALLOW_NONE_AUTHENTICATION=yes bitnami/etcd:latest etcdctl --endpoints http://etcd-server:2379 get /message Hello

查詢
package main
import (
"context"
"fmt"
"time"
"github.com/coreos/etcd/clientv3"
)
func main() {
/*
DialTimeout time.Duration `json:"dial-timeout"`
Endpoints []string `json:"endpoints"`
*/
cli, err := clientv3.New(clientv3.Config{
Endpoints: []string{"192.168.8.111:2379"},
DialTimeout: 5 * time.Second,
})
if err != nil {
fmt.Println("connect failed, err:", err)
return
}
fmt.Println("連接成功")
defer cli.Close()
//---------------------------------
//設(shè)置1秒超時(shí),訪問etcd有超時(shí)控制
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
cancel()
//取值,設(shè)置超時(shí)為1秒
ctx, cancel = context.WithTimeout(context.Background(), time.Second)
resp, err := cli.Get(ctx, "/message")
cancel()
if err != nil {
fmt.Println("get failed, err:", err)
return
}
for _, ev := range resp.Kvs {
fmt.Printf("%s : %s\n", ev.Key, ev.Value)
}
}

etcd存取
package main
import (
"context"
"fmt"
"github.com/coreos/etcd/clientv3"
"time"
)
func main() {
cli, err := clientv3.New(clientv3.Config{
Endpoints: []string{"localhost:2379", "localhost:22379", "localhost:32379"},
DialTimeout: 5 * time.Second,
})
if err != nil {
fmt.Println("connect failed, err:", err)
return
}
fmt.Println("連接成功")
defer cli.Close()
//設(shè)置1秒超時(shí),訪問etcd有超時(shí)控制
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
//操作etcd
_, err = cli.Put(ctx, "/test/conf/", "sample_value")
//操作完畢,取消etcd
cancel()
if err != nil {
fmt.Println("put failed, err:", err)
return
}
//取值,設(shè)置超時(shí)為1秒
ctx, cancel = context.WithTimeout(context.Background(), time.Second)
resp, err := cli.Get(ctx, "/test/conf/")
cancel()
if err != nil {
fmt.Println("get failed, err:", err)
return
}
for _, ev := range resp.Kvs {
fmt.Printf("%s : %s\n", ev.Key, ev.Value)
}
}

官網(wǎng)文檔:
https://etcd.io/docs/v3.5/dev-guide/interacting_v3/
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Docker?部署?Nexus?Maven私服的詳細(xì)過程
Nexus?是一個(gè)強(qiáng)大的倉庫管理器,廣泛用于管理和組織軟件構(gòu)建過程中的依賴項(xiàng)和構(gòu)件,通過?Docker?部署?Nexus?私服,可以簡化安裝和管理過程,并提供更高的靈活性和可擴(kuò)展性,這篇文章主要介紹了Docker?部署?Nexus?Maven私服的詳細(xì)過程,需要的朋友可以參考下2024-08-08
docker連接spring boot和mysql容器方法介紹
這篇文章主要介紹了docker連接spring boot和mysql容器方法介紹,具有一定參考價(jià)值,需要的朋友可以了解下。2017-10-10
Docker部署SQL?Server及最佳應(yīng)用小結(jié)
SQL?Server是由Microsoft開發(fā)和推廣的關(guān)系數(shù)據(jù)庫管理系統(tǒng)(DBMS),本文總結(jié)了容器環(huán)境下的部署及實(shí)踐應(yīng)用,需要的朋友可以參考下2022-08-08
Docker搭建Skywalking的實(shí)現(xiàn)示例
本文主要介紹了Docker搭建Skywalking的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
docker部署Vaultwarden密碼共享管理系統(tǒng)的實(shí)現(xiàn)(圖文)
Vaultwarden是一個(gè)開源的密碼管理器,它提供了類似于Bitwarden的功能,允許用戶安全地存儲和管理密碼、敏感數(shù)據(jù)和身份信息,本文主要介紹了docker部署Vaultwarden密碼共享管理系統(tǒng)的實(shí)現(xiàn),感興趣的可以了解一下2023-10-10
Docker?ZooKeeper3.4.10集群安裝配置過程
這篇文章主要介紹了ZooKeeper3.4.10集群安裝配置-Docker,集群部署配置步驟,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07

