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)文章
在 Centos 7.9 中如何安裝與配置 Docker 20.10.
這篇文章主要介紹了在 Centos 7.9 中如何安裝與配置 Docker 20.10.18,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01
Docker可視化面板Portainer的實(shí)現(xiàn)
Portainer是一個(gè)免費(fèi)的容器管理工具,支持Docker環(huán)境的可視化管理,通過Portainer,用戶可以輕松地在Windows或Linux容器中部署服務(wù),大大簡化了Docker容器的管理工作,感興趣的可以了解一下2024-11-11
給debian的docker容器添加crontab定時(shí)任務(wù)
這篇文章主要介紹了給debian的docker容器添加crontab定時(shí)任務(wù)的相關(guān)知識,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08
使用Docker容器運(yùn)行Oracle數(shù)據(jù)庫方式
這篇文章主要介紹了使用Docker容器運(yùn)行Oracle數(shù)據(jù)庫方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-05-05

