转载自:https://xie.infoq.cn/article/ffb0703096f0de1045e1ab028, 这篇博客很棒!完全可执行的。本人修改了作者docker命令替换成了docker compose文件的方式。
-
创建数据保存目录: mkdir -p /home/service/etcd/data;
创建配置目录:/home/service/etcd/conf;
配置文件: /home/service/etcd/conf/etcd.yml 内容如下:etcd配置参考:https://github.com/etcd-io/etcd/blob/main/etcd.conf.yml.sample
#成员名称
name: etcd01
## 数据保存路径
data-dir: /data
##对外提供服务的地址
listen-client-urls: http://0.0.0.0:2379
##成员之间通信地址
listen-peer-urls: http://0.0.0.0:2380
##此成员的客户端URL列表,用于通告群集的其余部分。这些URL可以包含域名
##advertise-client-urls: http://etcd01:2379
- 文件 /home/service/etcd/docker-compose.yaml 内容如下:
version: "3.5"
services:
etcd:
hostname: etcd
image: bitnami/etcd:3.5.9
container_name: etcd
restart: always
# 设置单节点可以不设置
# deploy:
# replicas: 1
# restart_policy:
# condition: on-failure
privileged: true
volumes:
- "/home/service/etcd/data:/data"
- "/home/service/etcd/conf:/opt/bitnami/etcd/conf"
environment:
#参数指不用密码可以连接,初次开启先设置免密
- "ALLOW_NONE_AUTHENTICATION=yes"
- "ETCD_CONFIG_FILE=/opt/bitnami/etcd/conf/etcd.yml"
ports:
- 2379:2379
- 2380:2380
networks:
- etcdnet
# networks如无要求,可以不指定
networks:
etcdnet:
name: etcdnet
-
在/home/service/etcd 目录下执行 docker-compose up -d ,就可以开启etcd的docker容器。
-
用docker ps查看运行的容器,用命令:“docker exec -it <容器id> sh ”进入容器。然后执行命令行添加用户并授权开启权限验证。
# 新增角色
etcdctl role add root
# 新增用户
etcdctl user add root
# 给用户分配角色
etcdctl user grant-role root root
# 查看用户信息
etcdctl user get root
# 为角色设置某个key的权限,有说root默认有所有权限,本人未测试,"/"代表所有的key
etcdctl role grant-permission root readwrite /
# 开启权限验证, 执行后大部分命令都要加账号密码执行:--user=root --password=xxx
etcdctl auth enable
# 禁用身份验证
etcdctl auth disable --user=root --password=xxx
# 修改密码
etcdctl user passwd root --user=root --password=xxx
标签:compose,ETCD,service,etcdctl,上用,etcd,home,docker,root
From: https://www.cnblogs.com/jing1024/p/18103456