我使用的 etcd 镜像版本是 quay.io/coreos/etcd:v3.5.5
拉取镜像
通过 docker pull 命令拉取 etcd 镜像
docker pull quay.io/coreos/etcd
该命令会从指定的镜像库(quay.io)拉取最新版本的 etcd 镜像。
可以使用 docker images
命令查看 etcd 镜像是否成功下载到本地
运行容器
-
通过命令行运行
docker run -d \ --name etcd-server \ -v /my/local/data:/etcd-data \ -p 2379:2379 \ -p 2380:2380 \ quay.io/coreos/etcd:latest \ etcd --name etcd-node1 \ --data-dir /etcd-data \ --advertise-client-urls http://192.168.1.100:2379 \ --listen-client-urls http://0.0.0.0:2379 \ --initial-advertise-peer-urls http://192.168.1.100:2380 \ --listen-peer-urls http://0.0.0.0:2380 \ --initial-cluster etcd-node1=http://192.168.1.100:2380
参数解释
-
Docker 参数:
-
--name etcd-server
:设置容器名称。 -
-v /my/local/data:/etcd-data
:将本地目录/my/local/data
挂载到容器内的/etcd-data
,用于持久化 etcd 数据。 -
-p 2379:2379
:将宿主机的 2379 端口映射到容器的 2379 端口,供客户端连接。 -
-p 2380:2380
:将宿主机的 2380 端口映射到容器的 2380 端口,用于 etcd 节点间的通信。
-
-
etcd 参数:
-
--name etcd-node1
:设置 etcd 节点的名称为etcd-node1
。 -
--data-dir /etcd-data
:指定 etcd 数据存储的目录为/etcd-data
。 -
--advertise-client-urls http://192.168.1.100:2379
:声明该节点对外暴露的客户端访问地址(替换为实际宿主机 IP 地址192.168.1.100
)。 -
--listen-client-urls http://0.0.0.0:2379
:设置 etcd 在容器内部监听客户端连接的地址,0.0.0.0
表示监听所有网络接口。 -
--initial-advertise-peer-urls http://192.168.1.100:2380
:声明该节点对外暴露的节点间通信地址(用于集群中的其他 etcd 节点与它通信)。 -
--listen-peer-urls http://0.0.0.0:2380
:设置 etcd 在容器内部监听节点间通信的地址。 -
--initial-cluster etcd-node1=http://192.168.1.100:2380
:定义 etcd 集群的初始成员,这里仅有一个节点(后续可以扩展)。
-
-
-
使用 dockerfile 运行
# 基于 quay.io/coreos/etcd:v3.5.5 构建 FROM quay.io/coreos/etcd:v3.5.5 # 设置环境变量(可以根据需要修改) ENV ETCD_NAME=etcd-node1 ENV ETCD_DATA_DIR=/etcd-data ENV ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 ENV ETCD_ADVERTISE_CLIENT_URLS=http://localhost:2379 # 拷贝自定义配置文件(可选) # 假设你有一个 etcd 的配置文件 custom-config.yml # COPY custom-config.yml /etc/etcd/etcd-config.yml # 暴露端口 EXPOSE 2379 2380 # 设置默认启动命令 CMD ["etcd"]
使用 docker build 命令在 dockerfile 所在的目录下构建镜像
docker build -t my-etcd:v1 .
-
-t my-etcd:v1
:为构建的镜像指定名称和标签。 -
.
:表示当前目录是构建上下文。
构建完成后,你可以运行这个自定义镜像。示例命令如下:
docker run -d \ --name etcd-server \ -v C:/Users/YourName/etcd-data:/etcd-data \ -p 2379:2379 \ -p 2380:2380 \ my-etcd:v1 \ etcd --name etcd-node1 \ --data-dir /etcd-data \ --advertise-client-urls http://localhost:2379 \ --listen-client-urls http://0.0.0.0:2379
- 将本地目录
C:/Users/YourName/etcd-data
挂载到容器内/etcd-data
。 - 通过
-p
将容器的 2379 和 2380 端口映射到主机。 - 你也可以直接利用
Dockerfile
中设置的默认CMD
来启动容器。
-
-
从 docker desktop 中启动 etcd
先使用
docker images
命令确保已经有了 etcd 镜像
填好之后点击 Run
验证 etcd 是否运行
-
在命令行中输入
curl http://127.0.0.1:2379/version
返回 etcd 的版本信息就表明启动成功了
查看 etcd 中的服务
在容器命令行中可以使用 etcdctl
查看 etcd 注册的服务
etcdctl get --prefix "" --keys-only
-
--prefix ""
:表示获取所有键。 -
--keys-only
:只显示键,不显示对应的值。
查看特定前缀的键
如果服务都注册在某个前缀下(例如 /services/
),可以通过指定前缀查看:
etcdctl get --prefix "/services/" --keys-only
查看某个键的值
要查看某个具体服务的信息,可以直接获取其键的值:
etcdctl get /services/service1
示例输出:
/services/service1
{"name": "service1", "address": "192.168.1.10:8080"}
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于