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使用sftp做容器化部署的方法步骤

    docker使用sftp做容器化部署的方法步骤

    本文主要介绍了docker使用sftp做容器化部署的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-07-07
  • Docker的java镜像制作及Podfile使用详解

    Docker的java镜像制作及Podfile使用详解

    文章浏览阅读169次。这里做个一个演示,给一个jar包和dockefile上传demo目录,就可以用如下的命令进行打包。dockerfile内容如下# 基础镜像# 设定时区# 拷贝jar包# 入口通过命令看看我们打包的镜像是否成功运行这个镜像看看这个镜像的运行日志。
    2025-09-09
  • Docker 删除镜像的实现

    Docker 删除镜像的实现

    本文主要介绍了Docker 删除镜像的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Harbor支持推送Helm chart包方式

    Harbor支持推送Helm chart包方式

    文章介绍了如何使用Harbor和Helm管理和推送Helm Charts,首先,确保Harbor安装时启用了ChartMuseum组件,并安装了Helm CLI,然后,通过添加Harbor为Helm仓库并使用helmcm-push插件推送Chart到Harbor,用户可以在Harbor UI查看和管理Charts,并通过Helm从Harbor拉取已上传的Chart
    2025-10-10
  • 在 Centos 7.9 中如何安装与配置 Docker 20.10.18

    在 Centos 7.9 中如何安装与配置 Docker 20.10.

    这篇文章主要介绍了在 Centos 7.9 中如何安装与配置 Docker 20.10.18,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • Docker可视化面板Portainer的实现

    Docker可视化面板Portainer的实现

    Portainer是一个免费的容器管理工具,支持Docker环境的可视化管理,通过Portainer,用户可以轻松地在Windows或Linux容器中部署服务,大大简化了Docker容器的管理工作,感兴趣的可以了解一下
    2024-11-11
  • Docker命令行输出格式化完全指南

    Docker命令行输出格式化完全指南

    在Docker中大多数的输出命令都支持--format 选项,用于控制输出,下面这篇文章主要给大家介绍了关于Docker命令行输出格式化的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • 常用的Docker命令及示例汇总分析

    常用的Docker命令及示例汇总分析

    这篇文章主要介绍了常用的Docker命令及示例的汇总分析,附含源码示例分析,有需要的朋友可以借鉴参考下,希望可以对广大读者有所帮助
    2021-09-09
  • 给debian的docker容器添加crontab定时任务

    给debian的docker容器添加crontab定时任务

    这篇文章主要介绍了给debian的docker容器添加crontab定时任务的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • 使用Docker容器运行Oracle数据库方式

    使用Docker容器运行Oracle数据库方式

    这篇文章主要介绍了使用Docker容器运行Oracle数据库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05

最新评论