Docker-11:Docekr安装Etcd

本文详细介绍了etcd的原理、环境准备、Docker部署和实战验证,包括简单安装、使用HTTP API、raft一致性算法及集群设置。

1. 概念介绍

etcd

etcdCoreOS 团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。 etcd 内部采用raft协议作为一致性算法,etcd 基于 Go语言 实现。

特点如下:

  • 简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单
  • 安全:支持SSL证书验证
  • 快速:根据官方提供的benchmark数据,单实例支持每秒2k+读操作
  • 可靠:采用raft算法,实现分布式系统数据的可用性和一致性
  • 开源:etcd项目地址:https://github.com/coreos/etcd/

2. 环境准备

此处安装,是利用下载的 etcd 源文件,利用 docker build 构建完整镜像,具体操作如下:

2.1. 新建文件夹

在磁盘某个路径下新建一个文件夹,用处操作 Dockerfile 和 源文件。

演示中的路径在 /data/docker-compose/etcd ,如特殊说明,否则都在此路径,以下简称 ETCD_HOME

2.2. 下载

ETCD_HOME 中下载最新版本,官方下载地址如下:

<think>我们有两个问题需要解决:1. version obsolete警告 2. no such service错误 根据之前的信息,version obsolete警告是因为在Docker Compose V2中,version字段已被弃用,建议删除。 no such service错误可能是因为服务名称不正确,或者docker-compose.yml文件有误。 步骤: 1. 确认docker-compose.yml文件的位置:用户当前在/home/smt/milvus目录下,且文件名为docker-compose.yml。 2. 删除docker-compose.yml中的version字段(如果存在)以消除警告。 3. 检查docker-compose.yml中定义的服务名称,确保在命令中使用正确的服务名称。 具体操作: 第一步:进入目录并检查服务列表 在终端中执行: cd /home/smt/milvus sudo docker-compose config --services 这个命令会列出当前docker-compose.yml中定义的所有服务。注意,这里可能会因为version字段而出现警告,但会继续执行。 第二步:编辑docker-compose.yml,删除version字段(如果存在) 使用文本编辑器打开文件,例如: sudo nano docker-compose.yml 找到顶部的`version`字段(通常在第一行),将其删除。同时注意,删除后确保`services`部分顶格写。 例如,删除前: version: '3.8' services: milvus-standalone: # 假设原来的服务名是这个 ... 删除后: services: milvus-standalone: ... 第三步:再次检查服务名称 执行:sudo docker-compose config --services 此时应该不会出现警告,并且会打印出服务名称。如果服务名称为`milvus-standalone`,则可以使用`sudo docker-compose logs milvus-standalone`。如果打印的服务名称是别的,比如`standalone`,那么我们就应该使用这个正确的名称。 第四步:如果第三步中列出的服务名称不是`milvus-standalone`,那么就需要用正确的名称来查看日志。 如果问题仍然存在,可能是docker-compose.yml文件格式错误,可以使用以下命令验证: sudo docker-compose config 它会验证文件格式,如果有错误会显示出来。 如果服务名称确实不存在,那么可能是用户下载的docker-compose.yml文件内容有误。建议参考Milvus官方文档,重新下载docker-compose.yml文件。 另外,注意用户使用的docker-compose版本。根据引用[4],用户可能已经安装了v2.34.0,这是支持无version字段的。 如果用户按照上述步骤操作后,仍然提示“no such service”,那么可能是服务根本就没有定义。此时需要检查docker-compose.yml的内容。 常见原因:用户可能从官方复制了错误的配置。Milvus单机版通常服务名为`standalone`,而不是`milvus-standalone`。 因此,如果检查发现服务名为`standalone`,则应该使用: sudo docker-compose logs standalone 总结解决方案: 1. 删除docker-compose.yml中的`version`行(消除警告)。 2. 使用`sudo docker-compose config --services`获取正确的服务名称。 3. 使用正确的服务名称执行日志命令。 根据引用[3],删除version字段是解决警告的方法。 注意:在删除version字段后,docker-compose.yml必须符合Compose Specification格式,即顶级元素包括services, networks, volumes等,且services下是各个服务的定义。 如果用户的操作没有效果,可能是因为缓存?或者没有在正确的目录?确保在docker-compose.yml所在目录执行命令。 另外,如果用户修改了docker-compose.yml,需要重新启动服务吗? 不需要,因为`logs`命令是针对已经运行的容器,修改docker-compose.yml文件本身不会影响已经运行的容器,只需要确保服务名称正确即可。但如果服务没有运行,那么需要先启动服务(`docker-compose up -d`),然后再查看日志。 因此,如果之前服务没有启动,那么需要先启动服务。 但是,如果用户修改了服务名称,那么就需要重新构建和启动。不过这里我们只是删除了version字段,不会改变服务名称,所以不需要重启。 然而,如果服务从未启动过,那么运行`logs`命令将没有输出。所以用户需要确保服务已经启动。 步骤补充: 1. 修改docker-compose.yml(删除version)后,如果服务还未启动,则需要启动: sudo docker-compose up -d 2. 然后查看日志: sudo docker-compose logs <正确的服务名称> 综上,我们给出具体步骤: </think>### 解决 Docker Compose 报错指南 #### 问题分析 1. **`version is obsolete` 警告** 您的 Docker Compose V2(v2.34.0)已弃用 `version` 字段,该字段被忽略但仍触发警告[^1][^3]。 2. **`no such service` 错误** 表明服务名称不匹配或 YAML 文件存在配置问题,可能原因: - 服务名称拼写错误(Milvus 官方模板中通常为 `standalone`) - `docker-compose.yml` 文件格式错误 - 文件路径不正确 #### 解决方案步骤 ##### 第一步:删除废弃的 version 字段 ```bash # 编辑 docker-compose.yml sudo nano /home/smt/milvus/docker-compose.yml ``` 删除顶部的 `version` 行(如 `version: '3.8'`),确保文件以 `services:` 开头: ```yaml services: # 无缩进顶格写 standalone: # 正确服务名 image: milvusdb/milvus-standalone ... ``` ##### 第二步:验证服务名称 ```bash # 进入目录并列出服务 cd /home/smt/milvus sudo docker-compose config --services ``` 典型 Milvus 输出应为: ``` standalone # 而非 milvus-standalone ``` ##### 第三步:使用正确命令查看日志 ```bash sudo docker-compose logs standalone # 替换为实际服务名 ``` ##### 第四步:重启服务(可选) 若服务未运行: ```bash sudo docker-compose up -d ``` #### 验证结果 ```bash # 检查警告是否消失 sudo docker-compose config # 查看服务状态 sudo docker-compose ps # 获取日志(无错误) sudo docker-compose logs standalone ``` 输出应显示 Milvus 启动日志,无警告信息。 #### 故障排查 若问题持续: 1. **检查文件权限**: ```bash sudo chown $USER /home/smt/milvus/docker-compose.yml ``` 2. **验证 YAML 语法**: ```bash sudo docker-compose config -q # 无输出表示无错误 ``` 3. **下载官方模板**: ```bash wget -O docker-compose.yml \ https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/docker/standalone/docker-compose.yml ``` > **关键提示**:Docker Compose V2 完全兼容无 `version` 字段的配置文件,删除该字段可永久解决警告[^1][^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王老邪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值