Docker Compose 安装 Etcd

在云原生环境下,etcd 是最核心的存储组件之一,也是很多云原生应用都依赖的存储组件,如 Kubernetes、CoreDNS、Rook等。

etcd 在2026年5月最新版本

  • v3.6.11
  • v3.5.30
  • v3.4.44

etcd 的 Docker 容器镜像托管在 Quay.ioGcr.io 两个平台,藏云阁提供镜像的同步

etcd 项目最初由 CoreOS 公司创建并开源,因此其早期镜像托管在 CoreOS 活跃使用的 quay.io 上。随着 etcd 成为 CNCF(云原生计算基金会) 的项目,并成为 Kubernetes 的核心数据存储,它与 Kubernetes 生态的联系愈发紧密。为了让 Kubernetes 集群的部署和运行更加稳定高效,etcd 官方在 2017 年底决定将 gcr.io 作为主要分发渠道之一,但同时也明确表示 quay.io 上的镜像不会被废弃,会继续维护。

其他 etcd 资源:

docker-compose.yml

单机使用 docker-compose 运行 etcd 可以直接使用如下配置。

核心需要注意的配置是 /data/etcd 这个挂载,要指定一个宿主机上的目录,用来保存 etcd 的数据。由于 etcd 是 IO 敏感型的,强烈推荐使用 SSD 类型的磁盘来挂载。

yaml 复制代码
services:
  etcd:
    container_name: etcd
    image: registry.cncfstack.com/quay.io/coreos/etcd:v3.6.11
    restart: unless-stopped
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 2G
    ports:
      - "2379:2379"
      - "2380:2380"
    volumes:
      - /data/etcd:/var/lib/etcd
      - /etc/localtime:/etc/localtime:ro
    environment:
      - ETCD_NAME=etcd-node01
      - ETCD_DATA_DIR=/var/lib/etcd
      - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
      - ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379
      - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
      - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://0.0.0.0:2380
      - ETCD_INITIAL_CLUSTER=etcd-node01=http://0.0.0.0:2380
      - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster-token
      - ETCD_INITIAL_CLUSTER_STATE=new
      - ETCD_AUTO_COMPACTION_MODE=revision
      - ETCD_AUTO_COMPACTION_RETENTION=1000
      - ETCD_QUOTA_BACKEND_BYTES=4294967296
      - ETCD_SNAPSHOT_COUNT=50000
      - ETCD_LOG_LEVEL=info
      - ETCD_LOGGER=zap
      - ETCD_LISTEN_METRICS_URLS=http://0.0.0.0:2381
    healthcheck:
      test: ["CMD", "etcdctl", "endpoint", "health"]
      interval: 30s
      timeout: 10s
      retries: 5
      start_period: 30s
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

在 docker-compose.yml 目录下执行如下命令启动

bash 复制代码
docker-compose up -d

etcdctl alias

etcd 在基于容器部署时,在宿主机上是没有 etcdctl 工具,而直接使用 docker run 运行 etcdctl 命令太长也不方便。

可以通过添加一个 alias 别名的方式来简化命令。

bash 复制代码
IP=`ip addr show eth0 |grep "inet\ "|awk -F'/' '{print $1}'|awk '{print $2}'`
alias etcdctl="docker run -i --rm registry.cncfstack.com/quay.io/coreos/etcd:v3.6.11 etcdctl --endpoints http://${IP}:2379 "

后续可以直接使用 etcdctl 命令来操作 etcd。

验证

验证过程用于判断 etcd 是否安装成功,能否正常读写数据

  • 查看etcd容器状态

使用 docker compose ls 命令查看 etcd 容器状态

bash 复制代码
# docker compose ls  |grep etcd
etcd                running(1)          /xxxxxx/etcd/docker-compose.yml
  • 查看etcd健康状态

etcd 集群健康状态可以通过 etcdctl endpoint health 命令查看

复制代码
# etcdctl endpoint health
http://192.168.1.1:2379 is healthy: successfully committed proposal: took = 2.373165ms
  • 验证etcd数据读写

读写数据测试

bash 复制代码
# etcdctl put aa bb
OK
# etcdctl get aa
aa
bb
相关推荐
自律最差的编程狗7 小时前
Ubuntu下Docker部署Ollama 轻量模型
linux·ubuntu·docker
wdfk_prog8 小时前
大型 Docker 镜像导出导入工程化:可靠性、磁盘与压缩
运维·docker·容器
郝开8 小时前
Docker Compose 模块化多环境配置规范指南:示例搭建Alf Tengine MD2DOC 1.1.1
运维·docker·容器
Albart5759 小时前
Docker Desktop 增量更新失败终极排查:Failed to apply delta update 反复回滚怎么办?
windows·docker·容器·docker部署大模型
sibylyue10 小时前
【云原生系列3】Docker Compose单机多容器编排工具
运维·docker·容器
java_logo11 小时前
Docker 部署 ArchivesSpace:轻松搭建档案信息管理平台
运维·docker·容器·档案管理·轩辕镜像·archivesspace·特藏
kuroomi15 小时前
Docker 与容器基础
linux·运维·docker
梦梦代码精19 小时前
《回收租赁系统技术选型避坑指南:业务闭环与二开自由度详解》
开发语言·低代码·docker·开源·代码规范
_itgo20 小时前
意图识别落地方案
运维·docker·容器
java_logo1 天前
Docker 部署 ClickHouse Server:轻松搭建列式 OLAP 分析数据库平台
数据库·clickhouse·docker·私有化部署·olap·列式数据库·轩辕镜像