如何使用github上的etcd构建docker镜像

下载etcd

shell 复制代码
git clone https://github.com/etcd-io/etcd.git etcd
cd etcd

开始安装

shell 复制代码
$ bash ./scripts/build-docker.sh

此时会遇到错误, 需要指定版本号

shell 复制代码
Usage: ./scripts/build-docker.sh VERSION

从github release上找一个对应的版本, 以下以v3.5.24为例

shell 复制代码
$ bash ./scripts/build-docker.sh v3.5.24

会先去github release下载对应的bin文件压缩包

shell 复制代码
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 19.4M  100 19.4M    0     0  7714k      0  0:00:02  0:00:02 --:--:-- 12.3M
x etcd-v3.5.24-linux-arm64/
x etcd-v3.5.24-linux-arm64/Documentation/
x etcd-v3.5.24-linux-arm64/Documentation/dev-guide/
x etcd-v3.5.24-linux-arm64/Documentation/dev-guide/apispec/
x etcd-v3.5.24-linux-arm64/Documentation/dev-guide/apispec/swagger/
x etcd-v3.5.24-linux-arm64/Documentation/dev-guide/apispec/swagger/v3lock.swagger.json
x etcd-v3.5.24-linux-arm64/Documentation/dev-guide/apispec/swagger/v3election.swagger.json
x etcd-v3.5.24-linux-arm64/Documentation/dev-guide/apispec/swagger/rpc.swagger.json
x etcd-v3.5.24-linux-arm64/Documentation/README.md
x etcd-v3.5.24-linux-arm64/README-etcdutl.md
x etcd-v3.5.24-linux-arm64/READMEv2-etcdctl.md
x etcd-v3.5.24-linux-arm64/README-etcdctl.md
x etcd-v3.5.24-linux-arm64/README.md
x etcd-v3.5.24-linux-arm64/etcdutl
x etcd-v3.5.24-linux-arm64/etcdctl
x etcd-v3.5.24-linux-arm64/etcd
[+] Building 1.2s (11/11) FINISHED                                                                                                                           docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                                                                                         0.0s
 => => transferring dockerfile: 425B                                                                                                                                         0.0s
 => [internal] load metadata for gcr.io/distroless/static-debian12@sha256:87bce11be0af225e4ca761c40babb06d6d559f5767fbf7dc3c47f0f1a466b92c                                   0.5s
 => [internal] load .dockerignore                                                                                                                                            0.0s
 => => transferring context: 2B                                                                                                                                              0.0s
 => CACHED [1/6] FROM gcr.io/distroless/static-debian12@sha256:87bce11be0af225e4ca761c40babb06d6d559f5767fbf7dc3c47f0f1a466b92c                                              0.0s
 => [internal] load build context                                                                                                                                            0.4s
 => => transferring context: 59.32MB                                                                                                                                         0.4s
 => [2/6] ADD etcd /usr/local/bin/                                                                                                                                           0.1s
 => [3/6] ADD etcdctl /usr/local/bin/                                                                                                                                        0.0s
 => [4/6] ADD etcdutl /usr/local/bin/                                                                                                                                        0.0s
 => [5/6] WORKDIR /var/etcd/                                                                                                                                                 0.0s
 => [6/6] WORKDIR /var/lib/etcd/                                                                                                                                             0.0s
 => exporting to image                                                                                                                                                       0.1s
 => => exporting layers                                                                                                                                                      0.1s
 => => writing image sha256:7bafb479d9c0cd1c4ac3427a8923964586914112f82562e287559e0acbc2d193                                                                                 0.0s
 => => naming to gcr.io/etcd-development/etcd:v3.5.24-arm64                                                                                                                  0.0s

View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/hg3fj6nnndb8h7f6v4mi4tldu
[+] Building 0.0s (11/11) FINISHED                                                                                                                           docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                                                                                         0.0s
 => => transferring dockerfile: 425B                                                                                                                                         0.0s
 => [internal] load metadata for gcr.io/distroless/static-debian12@sha256:87bce11be0af225e4ca761c40babb06d6d559f5767fbf7dc3c47f0f1a466b92c                                   0.0s
 => [internal] load .dockerignore                                                                                                                                            0.0s
 => => transferring context: 2B                                                                                                                                              0.0s
 => [1/6] FROM gcr.io/distroless/static-debian12@sha256:87bce11be0af225e4ca761c40babb06d6d559f5767fbf7dc3c47f0f1a466b92c                                                     0.0s
 => [internal] load build context                                                                                                                                            0.0s
 => => transferring context: 197B                                                                                                                                            0.0s
 => CACHED [2/6] ADD etcd /usr/local/bin/                                                                                                                                    0.0s
 => CACHED [3/6] ADD etcdctl /usr/local/bin/                                                                                                                                 0.0s
 => CACHED [4/6] ADD etcdutl /usr/local/bin/                                                                                                                                 0.0s
 => CACHED [5/6] WORKDIR /var/etcd/                                                                                                                                          0.0s
 => CACHED [6/6] WORKDIR /var/lib/etcd/                                                                                                                                      0.0s
 => exporting to image                                                                                                                                                       0.0s
 => => exporting layers                                                                                                                                                      0.0s
 => => writing image sha256:7bafb479d9c0cd1c4ac3427a8923964586914112f82562e287559e0acbc2d193                                                                                 0.0s
 => => naming to quay.io/coreos/etcd:v3.5.24-arm64

构建镜像成功后启动容器

shell 复制代码
$ docker run -d --name etcd-local -p 2379:2379 quay.io/coreos/etcd:v3.5.24-arm64
2649c3fd931a70109b0e16bb79469b7509e53c54a5f3e31779109f99fe202edf

如果是在mac平台会遇到以下错误

shell 复制代码
$ docker logs 2649c3fd931a70109b0e16bb79469b7509e53c54a5f3e31779109f99fe202edf 
exec /usr/local/bin/etcd: exec format error

原因是etcd在shell中是以当前平台为准构建的, 因此在shell中需要强制改为linux

修改后重新构建镜像

shell 复制代码
$ bash ./scripts/build-docker.sh v3.5.24
$ docker rm -f etcd-local
$ docker run -d --name etcd-local -p 2379:2379 quay.io/coreos/etcd:v3.5.24-arm64
2649c3fd931a70109b0e16bb79469b7509e53c54a5f3e31779109f99fe202edf

安装etcdctl后

shell 复制代码
$ etcdctl put foo bar
OK
$ etcdctl get foo
foo
bar
相关推荐
三无少女指南3 小时前
在 Ubuntu 上使用 Docker 部署思源笔记:一份详尽的实践教程以及常见错误汇总
笔记·ubuntu·docker
带刺的坐椅3 小时前
Solon (可替换 SpringBoot)集成 Docker 实战:30分钟搞定轻量级应用容器化部署
java·docker·jar·springboot·solon
技术杠精4 小时前
Docker Swarm 的负载均衡和平滑切换原理
docker·容器·负载均衡·1024程序员节
小蜗牛爱远行4 小时前
服务器和docker容器时间不一致相关问题
运维·服务器·docker
安卓开发者5 小时前
使用Docker轻松搭建WordPress博客:完整指南
运维·docker·容器
lxw18449125146 小时前
docker 核心技术浅析
运维·docker·容器
梁正雄7 小时前
14、Docker swarm-1-理论
运维·docker·容器
惊讶的猫7 小时前
docker常见命令:从拉取到推送社区仓库
docker
Will_Ye7 小时前
在Ubuntu中使用Docker打包程序(Conda, pip)
ubuntu·docker·conda