一. 搭建准备
#拉取go镜像
docker pull golang:1.12-alpine
#下载etcd,解压出来,得到etcd-v3.4.11-linux-amd64文件夹
https://github.com/etcd-io/etcd/releases
#创建文件夹
mkdir -p etcd/conf etcd/data
#结构
/home/shenyi/etcd
--- conf
-- data
二. 运行etcd
- 创建容器
#实例化go容器
docker run -it --name etcd -p 2379:2379 -v /home/shenyi/etcd:/etcd golang:1.12-alpine sh
#进入etcd文件夹
cd etcd-v3.4.11-linux-amd64
#拷贝etcd和etcdctl文件夹到go容器中
docker cp etcd etcd:/usr/bin && docker cp etcdctl etcd:/usr/bin
这里我报了一个错
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Put http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/etcd/archive?noOverwriteDirNonDir=true&path=%2Fusr: dial unix /var/run/docker.sock: connect: permission denied
解决
sudo groupadd docker #添加docker用户组
sudo gpasswd -a $XXX docker #检测当前用户是否已经在docker用户组中,其中XXX为用户名,例如我的,liangll
sudo gpasswd -a $USER docker #将当前用户添加至docker用户组
newgrp docker #更新docker用户组
参考:https://blog.csdn.net/liangllhahaha/article/details/92077065
- 创建配置文件
在宿主机/home/shenyi/etcd/conf下创建如下内容
name: $(hostname -s)
data_dir: /etcd/data
listen-client-urls: http://0.0.0.0:2379
文件名 etcd.yml
- 运行etcd
#进入容器
docker exec -it etcd sh
#增加可执行权限
chmod +x /usr/bin/etcd
#查看版本
etcd --version
#开启etcd
etcd --config-file /etcd/conf/etcd.yml
#退出容器,快捷键(Ctrl+Q+P)
三. 更改etcdctl版本
#重新进入容器
docker exec -it etcd sh
#增加可执行权限
chmod +x /usr/bin/etcdctl
#查看版本(版本2命令)
etcdctl -v
#改成版本3
export ETCDCTL_API=3
#查看版本(版本3命令)
etcdctl version
四. 测试
命令:
etcdctl put /user/101/name shenyi #设置值
etcdctl put /user/101/age 19 #设置值
etcdctl get /user/101/name #获取值
etcdctl get /user/101 --prefix #获取/user/101全部键值
etcdctl del /user/101 --prefix #删除/user/101全部键值
结果: