docker部署etcd

28 篇文章 2 订阅
第 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/
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值