mirror of
https://github.com/yeasy/docker_practice.git
synced 2024-12-25 14:38:54 +00:00
[etcd] Update to v3.4.x
This commit is contained in:
parent
8747860b95
commit
6c6d2ac973
@ -9,7 +9,7 @@ version: "3.6"
|
||||
services:
|
||||
|
||||
node1:
|
||||
image: quay.io/coreos/etcd
|
||||
image: quay.io/coreos/etcd:v3.4.0
|
||||
volumes:
|
||||
- node1-data:/etcd-data
|
||||
expose:
|
||||
@ -41,7 +41,7 @@ services:
|
||||
- docker-etcd
|
||||
|
||||
node2:
|
||||
image: quay.io/coreos/etcd
|
||||
image: quay.io/coreos/etcd:v3.4.0
|
||||
volumes:
|
||||
- node2-data:/etcd-data
|
||||
networks:
|
||||
@ -73,7 +73,7 @@ services:
|
||||
- docker-etcd
|
||||
|
||||
node3:
|
||||
image: quay.io/coreos/etcd
|
||||
image: quay.io/coreos/etcd:v3.4.0
|
||||
volumes:
|
||||
- node3-data:/etcd-data
|
||||
networks:
|
||||
|
@ -2,7 +2,7 @@ version: "3.6"
|
||||
services:
|
||||
|
||||
node1:
|
||||
image: quay.io/coreos/etcd
|
||||
image: quay.io/coreos/etcd:v3.4.0
|
||||
volumes:
|
||||
- node1-data:/etcd-data
|
||||
expose:
|
||||
@ -34,7 +34,7 @@ services:
|
||||
- docker-etcd
|
||||
|
||||
node2:
|
||||
image: quay.io/coreos/etcd
|
||||
image: quay.io/coreos/etcd:v3.4.0
|
||||
volumes:
|
||||
- node2-data:/etcd-data
|
||||
networks:
|
||||
@ -66,7 +66,7 @@ services:
|
||||
- docker-etcd
|
||||
|
||||
node3:
|
||||
image: quay.io/coreos/etcd
|
||||
image: quay.io/coreos/etcd:v3.4.0
|
||||
volumes:
|
||||
- node3-data:/etcd-data
|
||||
networks:
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
`etcdctl` 是一个命令行客户端,它能提供一些简洁的命令,供用户直接跟 `etcd` 服务打交道,而无需基于 `HTTP API` 方式。这在某些情况下将很方便,例如用户对服务进行测试或者手动修改数据库内容。我们也推荐在刚接触 `etcd` 时通过 `etcdctl` 命令来熟悉相关的操作,这些操作跟 `HTTP API` 实际上是对应的。
|
||||
|
||||
`etcd` 项目二进制发行包中已经包含了 `etcdctl` 工具,没有的话,可以从 [github.com/coreos/etcd/releases](https://github.com/coreos/etcd/releases) 下载。
|
||||
`etcd` 项目二进制发行包中已经包含了 `etcdctl` 工具,没有的话,可以从 [github.com/etcd-io/etcd/releases](https://github.com/etcd-io/etcd/releases) 下载。
|
||||
|
||||
`etcdctl` 支持如下的命令,大体上分为数据库操作和非数据库操作两类,后面将分别进行解释。
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
`etcdctl` 是一个命令行客户端,它能提供一些简洁的命令,供用户直接跟 `etcd` 服务打交道,而无需基于 `HTTP API` 方式。这在某些情况下将很方便,例如用户对服务进行测试或者手动修改数据库内容。我们也推荐在刚接触 `etcd` 时通过 `etcdctl` 命令来熟悉相关的操作,这些操作跟 `HTTP API` 实际上是对应的。
|
||||
|
||||
`etcd` 项目二进制发行包中已经包含了 `etcdctl` 工具,没有的话,可以从 [github.com/coreos/etcd/releases](https://github.com/coreos/etcd/releases) 下载。
|
||||
`etcd` 项目二进制发行包中已经包含了 `etcdctl` 工具,没有的话,可以从 [github.com/etcd-io/etcd/releases](https://github.com/etcd-io/etcd/releases) 下载。
|
||||
|
||||
`etcdctl` 支持如下的命令,大体上分为数据库操作和非数据库操作两类,后面将分别进行解释。
|
||||
|
||||
@ -14,10 +14,10 @@ USAGE:
|
||||
etcdctl
|
||||
|
||||
VERSION:
|
||||
3.2.10
|
||||
3.4.0
|
||||
|
||||
API VERSION:
|
||||
3.2
|
||||
3.4
|
||||
|
||||
|
||||
COMMANDS:
|
||||
|
@ -1,19 +1,19 @@
|
||||
## 安装
|
||||
|
||||
`etcd` 基于 `Go` 语言实现,因此,用户可以从 [项目主页](https://github.com/coreos/etcd) 下载源代码自行编译,也可以下载编译好的二进制文件,甚至直接使用制作好的 `Docker` 镜像文件来体验。
|
||||
`etcd` 基于 `Go` 语言实现,因此,用户可以从 [项目主页](https://github.com/etcd-io/etcd) 下载源代码自行编译,也可以下载编译好的二进制文件,甚至直接使用制作好的 `Docker` 镜像文件来体验。
|
||||
|
||||
>注意:本章节内容基于 etcd `3.x` 版本
|
||||
>注意:本章节内容基于 etcd `3.4.x` 版本
|
||||
|
||||
### 二进制文件方式下载
|
||||
|
||||
编译好的二进制文件都在 [github.com/coreos/etcd/releases](https://github.com/coreos/etcd/releases/) 页面,用户可以选择需要的版本,或通过下载工具下载。
|
||||
编译好的二进制文件都在 [github.com/etcd-io/etcd/releases](https://github.com/etcd-io/etcd/releases/) 页面,用户可以选择需要的版本,或通过下载工具下载。
|
||||
|
||||
例如,使用 `curl` 工具下载压缩包,并解压。
|
||||
|
||||
```bash
|
||||
$ curl -L https://github.com/coreos/etcd/releases/download/v3.2.10/etcd-v3.2.10-linux-amd64.tar.gz -o etcd-v3.2.10-linux-amd64.tar.gz
|
||||
$ tar xzvf etcd-v3.2.10-linux-amd64.tar.gz
|
||||
$ cd etcd-v3.2.10-linux-amd64
|
||||
$ curl -L https://github.com/etcd-io/etcd/releases/download/v3.4.0/etcd-v3.4.0-linux-amd64.tar.gz -o etcd-v3.4.0-linux-amd64.tar.gz
|
||||
$ tar xzvf etcd-v3.4.0-linux-amd64.tar.gz
|
||||
$ cd etcd-v3.4.0-linux-amd64
|
||||
```
|
||||
|
||||
解压后,可以看到文件包括
|
||||
@ -35,14 +35,7 @@ $ sudo cp etcd* /usr/local/bin/
|
||||
|
||||
```bash
|
||||
$ etcd
|
||||
2017-12-03 11:18:34.406082 I | etcdmain: etcd Version: 3.2.10
|
||||
2017-12-03 11:18:34.406226 I | etcdmain: Git SHA: GitNotFound
|
||||
2017-12-03 11:18:34.406235 I | etcdmain: Go Version: go1.9.2
|
||||
2017-12-03 11:18:34.406242 I | etcdmain: Go OS/Arch: darwin/amd64
|
||||
2017-12-03 11:18:34.406250 I | etcdmain: setting maximum number of CPUs to 4, total number of available CPUs is 4
|
||||
2017-12-03 11:18:34.406265 N | etcdmain: failed to detect default host (default host not supported on darwin_amd64)
|
||||
2017-12-03 11:18:34.406279 W | etcdmain: no data-dir provided, using default data-dir ./default.etcd
|
||||
2017-12-03 11:18:34.406457 N | etcdmain: the server is already initialized as member before, starting as etcd member...
|
||||
...
|
||||
2017-12-03 11:18:34.411579 I | embed: listening for peers on http://localhost:2380
|
||||
2017-12-03 11:18:34.411938 I | embed: listening for client requests on localhost:2379
|
||||
```
|
||||
@ -68,22 +61,27 @@ hello world
|
||||
镜像名称为 `quay.io/coreos/etcd`,可以通过下面的命令启动 `etcd` 服务监听到 `2379` 和 `2380` 端口。
|
||||
|
||||
```bash
|
||||
$ export NODE1=192.168.1.21
|
||||
|
||||
$ docker run --name etcd \
|
||||
-p 2379:2379 \
|
||||
-p 2380:2380 \
|
||||
--volume=etcd-data:/etcd-data \
|
||||
quay.io/coreos/etcd:latest \
|
||||
/usr/local/bin/etcd \
|
||||
--data-dir=/etcd-data --name node1 \
|
||||
--initial-advertise-peer-urls http://${NODE1}:2380 --listen-peer-urls http://0.0.0.0:2380 \
|
||||
--advertise-client-urls http://${NODE1}:2379 --listen-client-urls http://0.0.0.0:2379 \
|
||||
--initial-cluster node1=http://${NODE1}:2380
|
||||
$ docker run \
|
||||
-p 2379:2379 \
|
||||
-p 2380:2380 \
|
||||
--mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
|
||||
--name etcd-gcr-v3.4.0 \
|
||||
quay.io/coreos/etcd:v3.4.0 \
|
||||
/usr/local/bin/etcd \
|
||||
--name s1 \
|
||||
--data-dir /etcd-data \
|
||||
--listen-client-urls http://0.0.0.0:2379 \
|
||||
--advertise-client-urls http://0.0.0.0:2379 \
|
||||
--listen-peer-urls http://0.0.0.0:2380 \
|
||||
--initial-advertise-peer-urls http://0.0.0.0:2380 \
|
||||
--initial-cluster s1=http://0.0.0.0:2380 \
|
||||
--initial-cluster-token tkn \
|
||||
--initial-cluster-state new \
|
||||
--log-level info \
|
||||
--logger zap \
|
||||
--log-outputs stderr
|
||||
```
|
||||
|
||||
>注意:etcd 官方标注 `quay.io/coreos/etcd` 即将废弃,启用新的 `gcr.io/etcd-development/etcd` 镜像,但后者由于网络原因,国内不能下载到该镜像,这里仍然使用前者作为演示。
|
||||
|
||||
打开新的终端按照上一步的方法测试 `etcd` 是否成功启动。
|
||||
|
||||
### macOS 中运行
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
`etcd` 是 `CoreOS` 团队于 2013 年 6 月发起的开源项目,它的目标是构建一个高可用的分布式键值(`key-value`)数据库,基于 `Go` 语言实现。我们知道,在分布式系统中,各种服务的配置信息的管理分享,服务的发现是一个很基本同时也是很重要的问题。`CoreOS` 项目就希望基于 `etcd` 来解决这一问题。
|
||||
|
||||
`etcd` 目前在 [github.com/coreos/etcd](https://github.com/coreos/etcd) 进行维护。
|
||||
`etcd` 目前在 [github.com/etcd-io/etcd](https://github.com/etcd-io/etcd) 进行维护。
|
||||
|
||||
受到 [Apache ZooKeeper](https://zookeeper.apache.org/) 项目和 [doozer](https://github.com/ha/doozerd) 项目的启发,`etcd` 在设计的时候重点考虑了下面四个要素:
|
||||
|
||||
|
@ -40,7 +40,7 @@ FROM scratch
|
||||
|
||||
如果你以 `scratch` 为基础镜像的话,意味着你不以任何镜像为基础,接下来所写的指令将作为镜像第一层开始存在。
|
||||
|
||||
不以任何系统为基础,直接将可执行文件复制进镜像的做法并不罕见,比如 [`swarm`](https://hub.docker.com/_/swarm/)、[`coreos/etcd`](https://quay.io/repository/coreos/etcd)。对于 Linux 下静态编译的程序来说,并不需要有操作系统提供运行时支持,所需的一切库都已经在可执行文件里了,因此直接 `FROM scratch` 会让镜像体积更加小巧。使用 [Go 语言](https://golang.org/) 开发的应用很多会使用这种方式来制作镜像,这也是为什么有人认为 Go 是特别适合容器微服务架构的语言的原因之一。
|
||||
不以任何系统为基础,直接将可执行文件复制进镜像的做法并不罕见,比如 [`swarm`](https://hub.docker.com/_/swarm/)、[`etcd`](https://quay.io/repository/coreos/etcd)。对于 Linux 下静态编译的程序来说,并不需要有操作系统提供运行时支持,所需的一切库都已经在可执行文件里了,因此直接 `FROM scratch` 会让镜像体积更加小巧。使用 [Go 语言](https://golang.org/) 开发的应用很多会使用这种方式来制作镜像,这也是为什么有人认为 Go 是特别适合容器微服务架构的语言的原因之一。
|
||||
|
||||
### RUN 执行命令
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user