docker部署etcd实践过程
更新时间:2025年12月05日 14:14:27 作者:野猪佩挤
文章介绍了如何创建网络、启动Etcd服务器实例并将其附加到app-tier网络,以及如何启动Etcd客户端实例进行查询
第 1 步:创建网络
docker network create app-tier --driver bridge
第 2 步:启动 Etcd 服务器实例
使用命令的–network app-tier参数docker run将 Etcd 容器附加到app-tier网络
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 客户端实例
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()
//---------------------------------
//设置1秒超时,访问etcd有超时控制
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
cancel()
//取值,设置超时为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()
//设置1秒超时,访问etcd有超时控制
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
}
//取值,设置超时为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)
}
}

官网文档:
https://etcd.io/docs/v3.5/dev-guide/interacting_v3/
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
docker连接spring boot和mysql容器方法介绍
这篇文章主要介绍了docker连接spring boot和mysql容器方法介绍,具有一定参考价值,需要的朋友可以了解下。2017-10-10
docker部署Vaultwarden密码共享管理系统的实现(图文)
Vaultwarden是一个开源的密码管理器,它提供了类似于Bitwarden的功能,允许用户安全地存储和管理密码、敏感数据和身份信息,本文主要介绍了docker部署Vaultwarden密码共享管理系统的实现,感兴趣的可以了解一下2023-10-10
Docker ZooKeeper3.4.10集群安装配置过程
这篇文章主要介绍了ZooKeeper3.4.10集群安装配置-Docker,集群部署配置步骤,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-07-07


最新评论